2012-02-19 18 views
8

Chciałbym połączyć zmienną z ciągiem znaków.Jak połączyć zmienną z ciągiem lub zmienną w pliku wsadowym

W linii 7 do linii 11 Staram się konkat! z ciągiem lub ze zmienną %% P.
Ale to nie działa.

tj. masz plik 0_1_en.pdf w bieżącym folderze.
Skrót skryptu określa nazwę pliku na pierwszą cyfrę.

Następnie chcę utworzyć nową zmienną z ciągiem na przykład:
"GEN 0" where 0 is the !sPDFName!

kompletny kod:

1 SETLOCAL EnableDelayedExpansion 
2 for /f "delims=" %%P in ('dir /b *.pdf') do (
3 SET "sPDFName=%%~nxP" 
4 echo "!sPDFName:~0,1!" 
5 IF "!sPDFName:~0,1!"=="1" (SET "sPDFName=!sPDFName:~0,1!") 
6 IF "!sPDFName:~0,1!"=="0" (SET "sPDFName=!sPDFName:~0,1!") 
7 SET tempStr=GEN !sPDFName! 
8 SET myvar=!myvar! %%P 
9 
10 echo "%myvar%" 
11 echo "%tempStr%" 
12 ::echo "!sPDFName!" 
13 pause 
14 for /f "delims=" %%H in ('dir /b *.html') do (
15 IF "!sPDFName:~-0!"=="!%%H:~0,1!" echo %%H 
16 ) 
17) 

Odpowiedz

8

pracach konkatenacji! Ale twoje echo zawodzi.

W bloku poleceń (nawias) wszystkie zmienne procentowe są rozwijane przed wykonaniem bloku, więc wyjście z echo "%myvar%" jest zawartością myvar przed wejściem do pętli FOR-Loop.

Ale wiesz już prawidłowy sposób, przy użyciu funkcji opóźnionego ekspansji (z !)

więc kod powinien wyglądać

SETLOCAL EnableDelayedExpansion 
for /f "delims=" %%P in ('dir /b *.pdf') do (
    SET "sPDFName=%%~nxP" 
    echo "!sPDFName:~0,1!" 
    IF "!sPDFName:~0,1!"=="1" (SET "sPDFName=!sPDFName:~0,1!") 
    IF "!sPDFName:~0,1!"=="0" (SET "sPDFName=!sPDFName:~0,1!") 
    SET tempStr=GEN !sPDFName! 
    SET myvar=!myvar! %%P 

    echo "!myvar!" 
    echo "!tempStr!" 
    ::echo "!sPDFName!" 
    pause 
    for /f "delims=" %%H in ('dir /b *.html') do (
    IF "!sPDFName:~-0!"=="!%%H:~0,1!" echo %%H 
) 
) 
+0

Dzięki, to było głupie, żeby go przeoczyć – user1141649

Powiązane problemy