2013-05-17 2 views
3

Я пытаюсь переименовать файл с переменной myVar, который я установил в цикле for ниже. Проблема в том, что переименование не работает. Может ли кто-нибудь сказать мне, почему?Пакетный файл переименования с переменной

For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A 
ren file1.txt file2%myVar%.txt 

ответ

0

Ваш код работает, может быть, проблема с содержанием tmpfile2.txt (лексема),

или, возможно, переменная значение имеет пробелы и то, почему не работает,

без содержимого tmpfile2 мы не можем знать, почему он не работает.

Попробуйте этот путь, чтобы увидеть, что Происходило:

For /F "delims= usebackq" %%# in ("tmpFile2.txt") do (Echo "myVar=%%#" & set "myVar=%%#") 
Echo Rename "file1.txt" "file2%myVar%.txt" 
Rename "file1.txt" "file2%myVar%.txt" 

Или это еще:

For /F "delims= usebackq" %%# in ("tmpFile2.txt") do (Rename "file1.txt" "file2%%#.txt") 
1

Привет Пожалуйста, попробуйте этот код.

for /F "tokens=*" %%i in (myfile.txt) do (
    set %filename% = %%i 
    ren file1.txt file2%filename%.txt 
    ) 
+1

Попробуйте использовать свой код и, возможно, поместите проверенный код, чтобы его заменить. – foxidrive

3

Я мог бы поспорить, что ваш код помещается внутри круглыми скобками как этот:

if some == comparison (
    For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A 
    ren file1.txt file2%myVar%.txt 
) 

Если это так, то вам нужно использовать Отложенную расширение для того, чтобы получить значение а переменная, которая была модифицирована внутри блока:

setlocal EnableDelayedExpansion 
if some == comparison (
    For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A 
    ren file1.txt file2!myVar!.txt 
) 

Для получения более подробной информации, поиск той или другой сайтов для «замедленного расширения».

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