Ich habe eine Datei 01_tiago_miguel.txt
und dieser Code genannt:CMD Batch Rename nicht richtig funktioniert
setlocal EnableExtensions DisableDelayedExpansion
for %%A in ("*_*") do (
rem // Store current item:
set "FILE=%%~A"
rem // Toggle delayed expansion to avoid loss of or trouble with `!`:
setlocal EnableDelayedExpansion
rem // Remove everything up to and including the first `_`:
echo ren "!FILE!" "!FILE:*_=!"
)
endlocal
exit /B
Dadurch wird die Ausgabe gibt:
ren "01_tiago_miguel.txt" "tiago_miguel.txt"
das ist genau das, was ich will - entfernen die ersten drei Zeichen.
Allerdings, wenn ich die echo
entfernen umbenennt es zu miguel.txt
, die nicht viel Sinn macht, da die Ausgabe des Echos scheint richtig. Irgendeine Idee warum?
Mögliches Duplikat von [An welchem Punkt führt \ 'for \' oder \ 'for/R \ 'das Verzeichnis (tree) auf?] (Http://stackoverflow.com/questions/31975093/at-which-point -die-for-for-r-enumerate-the-directory-tree) – aschipfl
Nur eine Randnotiz: Das Ändern der Maske von '* _ *' nach '?? _ *' würde helfen, Dateien beim Ausführen nicht erneut umzubenennen das Skript ein zweites Mal ... – aschipfl
_ ... und deshalb habe ich das Muster speziell erwähnt und in meiner Antwort auf deine letzte Frage verwendet. Meine alternative Lösung wäre, dass Sie verschieben und umbenennen in ein anderes oder Halteverzeichnis, so dass die Dateien nicht erneut verarbeitet werden können. – Compo