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.

Bluten
quelle
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
Bluten
quelle
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
LotPings
quelle