18.10.2022, 07:02
(Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2022, 15:53 von tomwatayan.)
1
Ich habe dir mal eine entsprechende Batchdatei gebaut. In Zeile 11 kannst du den Ausgabepfad ändern:
Set "OutputPath=H:\Englische Isos"
Funktioniert auch für Dateien mit Leerzeichen. Für Sonderzeichen geht's zumindest für Umlaute. Was exotischeres habe ich nicht ausprobiert.
Einfach die Batchdatei starten und die Dateien im aktuellen Verzeichnis werden alle verschoben.
Die Datei muss als ANSI gespeichert werden.
Set "OutputPath=H:\Englische Isos"
Funktioniert auch für Dateien mit Leerzeichen. Für Sonderzeichen geht's zumindest für Umlaute. Was exotischeres habe ich nicht ausprobiert.
Einfach die Batchdatei starten und die Dateien im aktuellen Verzeichnis werden alle verschoben.
Code:
@echo off
chcp 1252
setlocal enableextensions disabledelayedexpansion
call :SetVariables
FOR /f "tokens=*" %%G IN ('dir /b') DO (call :subroutine "%%G")
echo Alles erledigt
exit /b 0
:SetVariables
REM OutputPath: Hier den Ausgabepfad für die verschobenen Dateien eingeben
Set "OutputPath=H:\Englische Isos"
exit /b 0
:subroutine
For %%A in (%1) do (
Set Folder=%%~dpA
Set FullName=%%~nxA
Set Name=%%~nA
Set Extension=%%~xA
)
if exist "%FullName%\*" (
echo Überspringe Ordner "%FullName%"
exit /b 0
) else (
if "%Extension%"==".bat" (
echo Überspringe Batchdatei "%FullName%"
exit /b 0
)
)
call :getLastDashedSegment "%Name%"
if not exist "%OutputPath%\%lastDashedSegment%" (
mkdir "%OutputPath%\%lastDashedSegment%"
)
move "%FullName%" "%OutputPath%\%lastDashedSegment%"
exit /b 0
:getLastDashedSegment
set "Input=%~1"
set "SpaceAsEscaped=%Input:Space=SpaceToken%"
set "SpacesAsTokens=%SpaceAsEscaped: =SpaceSign%"
set "DashesAsSpaces=%SpacesAsTokens:-= %"
if "%DashesAsSpaces%" EQU "%SpacesAsTokens%" (
set "lastDashedSegment=Unknown"
exit /b 0
)
for %%a in (%DashesAsSpaces%) do (
call :replaceQuotedTokens "%%a"
)
exit /b 0
:replaceQuotedTokens
set "Input=%~1"
set "ReplacedSpaces=%Input:SpaceSign= %"
set "lastDashedSegment=%ReplacedSpaces:SpaceToken=Space%"
exit /b 0
Die Datei muss als ANSI gespeichert werden.