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? :-)

1

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! )