2012-02-19 4 views
8

Я хотел бы объединить переменную со строкой.Как связать переменную со строкой или переменной в пакетном файле

В строке 7 по строке 11 я пытаюсь выполнить некоторые переменные! с строкой или переменной %% P.
Но это не работает.

I.e. у вас есть файл 0_1_en.pdf в текущей папке.
Сценарий сокращает имя файла до первой цифры.

После этого я хочу, чтобы создать новую переменную со строкой, например:
"GEN 0" where 0 is the !sPDFName!

Полный код:

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) 

ответ

8

конкатенация работает! Но ваше эхо не удается.

Как вы находитесь в командном блоке (скобки), все проценты переменных будут расширены до того, как будет выполнен блок, поэтому вывод echo "%myvar%" будет содержимым myvar перед входом в FOR-Loop.

Но вы знаете правильный путь уже, используя замедленное разложение (с !)

Так что ваш код должен выглядеть

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

Спасибо, это было глупо с моей стороны, игнорировать его – user1141649

Смежные вопросы