2013-03-08 110 views
0

我有一個批處理腳本來讀取文本文件。如果文件名不包含特殊字符,它工作正常,但如果文件名包含特殊字符則失敗。批處理腳本來打開文本文件

防爆文件名:localhost_access_log.2013-03-08

代碼:

for /f "skip=%* tokens=*" %%b in (Y:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2013-03-08.txt) do (
    echo "Data Copied" 
) 

請幫助我如何閱讀這些類型的文件。

+0

將文件名放在引號「...」中。否則,帶空格的文件名不能被正確識別。 – 2013-03-08 13:36:01

+1

...並添加'usebackq'選項。 – rojo 2013-03-08 13:37:12

+0

什麼是你的特殊字符? (nota bene:對我來說這將是Unicode以外的字符,這將是非常*特殊的) – Joey 2013-03-08 14:07:43

回答

1

類型help for在命令行獲得的對命令(這點我承認是相當難讀)的文件,你會得到這個埋葬大約一半下來:

For file names that contain spaces, you need to quote the filenames with 
double quotes. In order to use double quotes in this manner, you also 
need to use the usebackq option, otherwise the double quotes will be 
interpreted as defining a literal string to parse. 

所以,你的代碼應該改變對此:

for /f "usebackq skip=%* tokens=*" %%b in ("Y:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.2013-03-08.txt") do (
    echo "Data Copied" 
)