Работа с файлами в bat - PullRequest
       1

Работа с файлами в bat

1 голос
/ 08 декабря 2011

Я должен показать имена файлов, используя данный шаблон.Я написал следующий код:

if "%2" == ""  (
    echo "Missing second argument!"
    set /p FileName="Input file name template ('*', '?' are allowed): "
    set /p FileType="Input file type ('text', 'bat', 'all' only): "

    if FileType == "all" (set FileType = "*")
) else (
    set FileType="%2"
)


echo %DirSearch%\%FileName%.%FileType%

for %%i in (%DirSearch%\%FileName%.%FileType%) do  (echo "Thats it: %%i")

Если второй аргумент пуст, я спрашиваю пользователя о шаблоне имени файла, расширении (если оно равно 'all', я переписываю его значение как '*'.

Теперь первая проблема в том, что он не переписан. Когда я помещаю 'all', 'FileType' все еще 'all' после установки его в '*'. Почему?

И эхоотображается:

"C:\Folder"\test.all
"Thats it: "C:\Folder"\test.all"

Как интерпретировать его как одно значение и использовать в for?


Новый код:

if "%2" == ""  (
        ...
    if "%FileType%" == "all" (set FileType=*)
) else (
        ...
)

set result=%DirSearch%\%FileName%.%FileType%
echo %result%

for %%i in (%result%) do  (echo "Thats it: %%i")


// echo %result%:
"C:\Data\test"\test.all
// in for cycle
"Thats it: "C:\Data\test"\test.all"

Правильная строкадолжно быть: "C: \ Data \ test \ test.all"

1 Ответ

3 голосов
/ 08 декабря 2011

Вы неправильно проверяете значение FileType. Кроме того, вы неправильно устанавливаете новое значение. Код должен читать

if "%FileType%" == "all" (set FileType=*)

В противном случае вы просто сравниваете строки «FileType» и «all», что, конечно, никогда не удается.

В сторону: у вас, похоже, также есть какая-то ошибка в коде, который устанавливает DirSearch; там есть дополнительная двойная кавычка, которой не должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...