Eine Variable mit zwei Prozent in einer .bat-Datei unterbringen
516
NicoFC34
Ich hatte ein Problem beim Versuch, eine .bat-Datei zu implementieren, und konnte keine Antwort finden. Ich versuche, alle Ordnernamen ohne den Systempfad anzuzeigen.
Ich habe so etwas ausprobiert, aber es funktioniert nicht.
@echo off set back=%cd% for /d %%I in (C:\test\test*) do ( cd %%I 2>&1 >nul echo %%~nxI:~10,5 ) cd %back% 2>&1 >nul
Hast du eine Lösung bitte? :-)
3 Antworten auf die Frage
1
LotPings
Teilzeichenfolgen funktionieren nur mit normalen Variablen, nicht mit den for-Meta-Variablen. Kopieren Sie den Inhalt in eine var und da sich dieser in einem (Codeblock) befindet, benötigen Sie DelayedExpansion. Verwenden Sie die Pseudoaufrufmethode :
:: Q:\Test\2018\07\26\SU_1345000.cmd @echo off PushD . for /d %%I in (A:\test\test*) do ( Set "Dir=%%I" Call echo %%Dir:~10,5%% ) PopD
In einem Baum wie diesem:
> tree └───test ├───test1 ├───test2 └───test3
das kehrt zurück
> Q:\Test\2018\07\26\SU_1345000.cmd st1 st2 st3
Möglicherweise war Ihr Offset nicht korrekt.
0
chloesoe
Du könntest benutzen dir /ad /b C:\test\test*
@echo off set back=%cd% for /d %%I in (C:\test\test*) do ( dir /ad /b %%I ) cd %back% 2>&1 >nul
Dieses Skript würde alle Ordnernamen in den Ordnern drucken C:\test\test*
0
NicoFC34
Danke für deine Antworten. Hier ist eine Lösung, die für mich funktioniert hat:
@echo off setlocal EnableDelayedExpansion for /d %%I in (C:\test\testV*) do ( set current_folder=%%I set test_version=!current_folder:~12,6! set test_version=!test_version:_=.! echo !current_folder! echo !test_version! )