Batch, der eine bestimmte Datei in einem Unterordner mit dem Namen des übergeordneten Ordners und der Erweiterung umbenennt


-1

Ich bin ein ziemlicher Neuling in Dos und ich versuche ein Drehbuch zu schreiben (ja)

Was ich versuche zu tun ist:

  • Nehmen Sie den Namen des Ordners, in dem sich der Stapel befindet (Beispiel:. \ Project_Apple * .bat)
  • Benennen Sie eine Datei in einem Unterordner mit dem Namen des ersten um
    (Beispiel: \Project_Apple\OUTPUT\template.txt> \Project_Apple\OUTPUT\Project_Apple.txt)

Für die Umbenennung und Ausrichtung habe ich kein Problem. Ich benutze CD und REN. Ich habe gelesen, dass der FOR-Befehl dies kann und lese Dokumentationen darüber, aber ich finde nicht, wie ich den Ordnernamen "merken" kann.

Gibt es eine Möglichkeit, dies zu tun?

BEARBEITEN:

Ich habe einen großen Schritt gemacht. Ich schaffe es, eine Datei im Ordner mit dem Namen des Ordners umzubenennen mit:

for %%i in (%cd%) do set CurrDirName=%%~nxi
rename test.txt %CurrDirName%

Jetzt versuche ich, die Datei im Unterordner anzuvisieren.


1
SuperUser ist kein Skriptschreibdienst. Zeigen Sie uns Ihre Recherchen und was Sie versucht haben, dann helfen wir Ihnen gerne weiter. Wir schreiben aber nicht nur ein Drehbuch für Sie
— SimonS

Antworten:


0

Ich habe es geschafft, das zu tun, was ich will.

for %%i in (%cd%) do set CurrDirName=%%~nxi
cd %CurrDir%\OUTPUT\
rename template.txt %CurrDirName%.txt

0

Nicht verwenden %CD%Dies ist nicht unbedingt der Ordner, in dem sich der Stapel befindet.

  • Wenn Sie den Stapel mit einem absoluten oder relativen Pfad aufrufen, wird der aktuelle Ordner nicht geändert.
  • Verwenden Sie diese Option, um auf die aktuell ausgeführte Batchdatei mit vollständigem Pfad zu verweisen %~f0
  • Extrahieren Sie den Ordner mit den Modifizierern for und aus diesem Ordner~

:: Q:\Test\2019\01\24\SU_1397868.cmd
@Echo off
Echo This batch file full path: %~f0
Echo This batch file drive    : %~d0
Echo This batch file path     : %~p0
Echo This batch file name     : %~n0

for %%A in (%0\..) Do Set folder=%%~nxA

Echo This batch file folder   : %folder%

If exist "%~dp0Output\template.txt" (
    Ren  "%~dp0Output\template.txt" "%folder%.txt"
)

Beispielausgabe auf meinem RAM-Laufwerk A:

> SU_1397868.cmd
This batch file full path: A:\Project_Apple\SU_1397868.cmd
This batch file drive    : A:
This batch file path     : \Project_Apple\
This batch file name     : SU_1397868
This batch file folder   : Project_Apple

> tree /F A:\
A:\
└───Project_Apple
    │   SU_1397868.cmd
    │
    └───OUTPUT
            Project_Apple.txt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.