2011-12-08 122 views
1

我必须使用给定的模板显示文件名。我已经写了下面的代码:使用蝙蝠文件

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") 

如果第二个参数是空的,我问用户对文件名模板,扩展名(如果它等于“所有”我重写它的值是“*”

现在第一麻烦的是,它没有将其设置为改写后当我把“所有”的“文件类型”仍是“所有”“*”为什么

和回声显示出来:?

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

如何在inter把它作为单一的价值并在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.all”

回答

3

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

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

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

另外:你也似乎有一些错误的代码,设置DirSearch;有一个额外的尾部双引号应该不是。

+0

这不会重写'FileType',如果它仍然是'all'。 – Ockonal

+0

@Ockonal:事实证明'='周围也不应有空格,我相应地编辑了答案。另外,当*设置*时,你不需要引用值。 – Jon

+0

好的,谢谢,现在它取代它。但是如何为'for'循环生成正确的字符串? – Ockonal