wake-up-neo.com

So entfernen Sie Leerzeichen aus Dateinamen (in loser Schüttung)

Wie entferne ich Leerzeichen (nicht durch Unterstriche ersetzen) aus mehreren tausend Dateien unter Windows? Kann ich das über den DOS-Befehl tun?

Zur Zeit:

file one.mp3
file two.mp3

Alle Dateien müssen werden:

fileone.mp3
filetwo.mp3
20
Nick Kahn

Hier ist ein Skript, das Dateien effizient umbenennen kann und dabei alle Leerzeichen vom Namen entfernt.

:renameNoSpace  [/R]  [FolderPath]
@echo off
setlocal disableDelayedExpansion
if /i "%~1"=="/R" (
  set "forOption=%~1 %2"
  set "inPath="
) else (
  set "forOption="
  if "%~1" neq "" (set "inPath=%~1\") else set "inPath="
)
for %forOption% %%F in ("%inPath%* *") do (
  if /i "%~f0" neq "%%~fF" (
    set "folder=%%~dpF"
    set "file=%%~nxF"
    setlocal enableDelayedExpansion
    echo ren "!folder!!file!" "!file: =!"
    ren "!folder!!file!" "!file: =!"
    endlocal
  )
)

Angenommen, das Skript heißt renameNoSpace.bat

renameNoSpace: (keine Argumente) Benennt Dateien im aktuellen Verzeichnis um

renameNoSpace /R: Benennt Dateien in der Ordnerstruktur um, die sich im aktuellen Verzeichnis befindet 

renameNoSpace myFolder: Benennt Dateien im Verzeichnis "myFolder" um, das sich im aktuellen Verzeichnis befindet.

renameNoSpace "c:\my folder\": Benennt Dateien im angegebenen Pfad um. Anführungszeichen werden verwendet, weil Pfad ein Leerzeichen enthält.

renameNoSpace /R c:\: Benennt alle Dateien auf dem Laufwerk C: um.

70
dbenham

Erstellen Sie eine Powershell-Datei mit der Erweiterung *.ps1

Schreiben Sie diesen Code:

dir |
Where-Object { $_.name.Contains(" ") } |
Rename-Item -NewName { $_.name -replace " ","" }

speichern, dann Rechtsklick -> mit Powershell ausführen

8
bogudoby
@echo off
setlocal enableextensions enabledelayedexpansion

for %%f in (*.*) do (
set ARG=%%~nxf
rename "%%f" !ARG: =!
)
4
pathe3

Sie können ein einfaches Skript schreiben, das dies für eine Datei/ein Verzeichnis ausführt, z. B .:

@echo off
setlocal enableextensions enabledelayedexpansion

set "ARG=%~1"
ren "%ARG%" "%ARG: =%"

... und wenn Sie möchten, führen Sie es über alle Dateien und/oder Verzeichnisse, die Sie interessieren. Wenn Sie beispielsweise das obige Skript als myrenamingscript.cmd erstellen, können Sie es über alle Nicht-Verzeichnisdateien im aktuellen Verzeichnis ausführen, indem Sie Folgendes ausführen:

for %f in (*) do @myrenamingscript.cmd "%~f"
3
reuben

In Windows:

  1. Öffnen Sie eine Eingabeaufforderung.
  2. Gehen Sie mit dem Befehl cd in den Ordner (z. B .: cd "paht of your folder").
  3. Öffnen Sie eine Powershell, indem Sie Folgendes eingeben: Powershell
  4. Geben Sie dann Folgendes ein: get-childitem * .mp3 | foreach {Umbenennungselement $ _ $ _. name.replace ("", "")}
1
Javiers

Das Problem, mit dem ich konfrontiert wurde, ist, dass möglicherweise bereits eine Datei mit dem Namen existiert, den Sie der neuen Datei geben wollen (z. B. wenn sich 2 Dateien im Ordner "file one.txt" und "file_one.txt" befinden msgstr "Wenn Sie versuchen, die Leerzeichen durch Unterstriche zu ersetzen, wird eine Datei die andere ersetzen. Also habe ich dieses Skript erstellt, das prüft, ob der neue Name bereits vorhanden ist, und wenn dies der Fall ist, wird eine Nummer an das Ende des Dateinamens angehängt (fügt der Nummer 1 hinzu, bis es keine andere Datei mit diesem Namen gibt). Anweisungen darüber, was geändert werden muss, befinden sich oben (empfohlene Zeilen). Speichern Sie die Stapeldatei nicht in demselben Ordner, in dem Sie die Dateien umbenannt haben, wenn Sie die Option *. * Verwenden. Ich hoffe das hilft.

@echo off

REM Instructions
REM This script repaces spaces from file names with underscores. 
REM If you want to just remove the spaces uncomment lines 30 and 52 and comment out the lines 29 and 51. 
REM set the following parameters. 
REM pb is the folder containing the files we want to rename (fullpath)
REM tm is a temporary folder that will be created and deleted. Just put a folder that does not exist and is not used by anything else (fullpath).
REM all is the file type you want to raname. E.g. *.* for every file, *.txt for TXTs, *.pdf for PDFs etc 
REM you don't have to change anything else

set pb=<folder containing the files to rename>
set tm=<a temp folder that does not exist>
set all=*.*

set pa=%pb%%all%

setlocal EnableDelayedExpansion

cd /d %pa%

set /a count=1

if not exist %tm% mkdir %tm%

for /f %%F in (%pa%) do (

    set name=%%~nF
    set name2=!name: =_!
    REM set name2=!name: =!
    set name3=!name2!%%~xF

    if !name2! == %%~nF ( 
        move /y %%~dpF\!name3! %tm%\ >nul
    ) else (
            if not exist %%~dpF\!name3! ( 
                if not exist %tm%\!name3! (
                    ren "%%F" "!name3!" 
                    move /y %%~dpF\!name3! %tm%\ >nul
                )
        )   
    ) 

)

:rename

for /f %%F in (%pa%) do (

    set name=%%~nF
    set name2=!name: =_!
    REM set name2=!name: =!
    set name4=!name2!%count%
    set name3=!name4!%%~xF

    if !name2! == %%~nF ( 
        move /y %%~dpF\!name3! %tm%\ >nul
    ) else (
            if not exist %%~dpF\!name3! ( 
                if not exist %tm%\!name3! (
                    ren "%%F" "!name3!" 
                    move /y %%~dpF\!name3! %tm%\ >nul
                )
        )   
    ) 

)

set /a count = %count% + 1

set /a loop = 0

for %%F in (%pa%) do (set /a loop = 1)

if %loop% equ 1 goto rename

move /y %tm%\%all% %pb% >nul

rmdir /s /q %tm%
0
Mike_Gre