2011-12-08 151 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