2017-07-21 53 views
9

Mam jedno destination.txt pliku z informacjami o moich ścieżki CD:Jak zmienić nazwy plików w ścieżce z nowymi nazwami w pliku wsadowym?

C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\SME99.ISO 
C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\Biomasse.iso 
C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\SAMPE36.ISO 

Teraz muszę zmienić nazwy obrazów ISO z numerami, które są w pliku PPN.txt jeden po drugim:

470692405 
394006801 
348117876 

Tak powinno być

SME99.ISO -> 470692405.ISO 
Biomasse.iso -> 394006801.ISO 
Sampe36.ISO -> 348117876.ISO 

mam następujący kod do niego:

< "PPN.txt" (for /F "usebackq delims=" %%a in ("destination.txt") do (
    set/P out="" & rename "%%a" "!out!%%~xa" 

Chcę zmodyfikować kod w ten sposób, że pracuje dla destination.txt Plik:

Success on: "C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\SME99.ISO" 
Error on: "C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\Biomasse.iso" 
Success on: "C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\SAMPE36.ISO" 

Jeśli „Sukces na” pobyty przed ścieżką w destination.txt obraz powinien zostać przemianowany jak zawsze tylko z numerem z PPN.txt. Ale jeśli "Błąd włączenia" pozostaje przed ścieżką w pliku destination.txt, należy zmienić nazwę obrazu, tak jak ten numer e_% z pliku PPN.txt%. Tak powinno być dodatkowy prefiks e_ tam

Odpowiedz

4

Edit Batch teraz trwa prefiks pod uwagę podział na linie z destination.txt w okrężnicy w %%A i %%B

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
< "PPN.txt" (
    for /F "usebackq tokens=1,* delims=:" %%A in ("destination.txt") do (
     Set "out=" 
     Set /P "out=" 
     Set "out=!out: =!" 
     If /i "%%A" equ "Success on" (
      ren %%B "!out!.ISO" && echo Renamed %%B to "!out!.ISO" 
     ) Else If /i "%%A" equ "Error on" (
      ren %%B "e_!out!.ISO" && echo Renamed %%B to "e_!out!.ISO" 
     ) Else (Echo unknown prefix "%%~A") 
    ) 
) 

plików Symulowane ISO wrócił tego wyjścia:

Renamed "C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\SME99.ISO" to "470692405.ISO" 
Renamed "C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\Biomasse.iso" to "e_394006801.ISO" 
Renamed "C:\Users\NekhayenkoO\Desktop\LOG Dateien CD Imaging\SAMPE36.ISO" to "348117876.ISO" 
+0

Próbowałem go, ale zawsze pokazuje błąd składni –

+0

W którym poleceniu dokładny jest błąd? – LotPings

+0

Syntaxerror Błąd w: "Powodzenie w:" C: \ Users \ NekhayenkoO \ Desktop \ LOG Dateien Obraz dysku CD \ SME99.ISO "" Syntaxerror. Syntaxfehler. Błąd w: "Błąd w:" C: \ Użytkownicy \ NekhayenkoO \ Desktop \ LOG Dateien Obraz dysku CD \ Biomasse.iso "" Syntaxerror. Syntaxerror. Błąd w: "Powodzenie w:" C: \ Users \ NekhayenkoO \ Desktop \ LOG Dateien Obraz dysku CD \ SAMPE36.ISO "" Syntaxerror. –

1

Spróbuj:

< PPN.txt (
    for /F "delims=" %%a in (destination.txt) do (
    set/P out="" & rename "%%a" "!out!%%~xa"&&echo Success on: "%%a"||(
     echo Error on: "%%a" & rename "%%a" "e_!out!%%~xa" 
    ) 
) 
) 

&& zajmie sucess poprzednich operacji (errorlevel 0), || zajmie awarię.

+0

spróbowałem , ale nie zmienia nazwy. Czy jesteś pewien, że do zmiennej %% a w pierwszej linii należy tylko ścieżka w "" bez powodzenia włączenia lub błędu w:? –

+0

Brakuje jednego nawiasu zamykającego. – LotPings

+0

Trzeci nawias zamykający prowadzi do błędu składni –