2013-03-08 111 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" 
)