使用bat中的文件

时间:2011-12-08 02:14:29

标签: windows templates for-loop batch-file

我必须使用给定的模板显示文件名。我写了以下代码:

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 个答案:

答案 0 :(得分:3)

您没有以正确的方式测试FileType的值。此外,您没有以正确的方式设置新值。代码应该是

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

否则,您只是比较字符串“FileType”和“all”,这当然不会成功。

除此之外:您似乎在设置DirSearch的代码中也有一些错误;那里有一个额外的尾随双引号,不应该是。