如何批量处理文件名中的空格?

时间:2014-05-07 15:41:30

标签: batch-file scripting command whitespace filenames

我有一个允许用户输入文件的批处理文件。它正确输入并存储文件路径。但是当我进入文件并对它做任何事情时,(在我的情况下只是将line1设置为第一行并打印它),它找不到文件名,因为它有一个空格。

这是代码。

@ECHO OFF
SET /p "infile=enter file"
Echo you're file is %infile%


setlocal enableextensions enabledelayedexpansion
FOR /f "usebackqdelims=" %%a IN ("%infile%") do (
set line1= %1
    goto :endfor
)
:endfor
echo %line1%

pause
endlocal

这就是发生的事情。

enter image description here

当试图找到该文件时,系统认为文件名以“my”结尾而不是完整的“my text.txt”如何处理文件名中的空格?

2 个答案:

答案 0 :(得分:1)

您的问题不是文件名中的空格。您的问题是您输入的文件名称包含引号,存储在变量中的引号,然后在for命令中放置aditional引号。

SET /p "infile=enter file"
set "infile=%infile:"=%"
Echo you're file is %infile%

确保文件名中没有附加引号,并且不会发生此错误(或在输入文件名时不要使用引号)

答案 1 :(得分:1)

除了MC_ND的回答:
在原始代码中,此行应设置为%% a而不是%1(也没有空格):

set line1= %1