【问题标题】:How to deal with spaces in filenames in batch?如何批量处理文件名中的空格?
【发布时间】:2014-05-07 15:41:29
【问题描述】:

我有一个允许用户输入文件的批处理文件。它正确输入并存储文件路径。但是当我去输入文件并对其进行任何操作时(在我的情况下,只需将 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

这就是发生的事情。

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

【问题讨论】:

    标签: batch-file scripting command whitespace filenames


    【解决方案1】:

    您的问题不在于文件名中的空格。您的问题是您正在输入带有引号的文件名,引号存储在变量中,然后在 for 命令中放置额外的引号。

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

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

    【讨论】:

    • 哇,太完美了!我不敢相信是这样的!我想,因为它正在该目录中寻找“我的”,所以空间正在缩短。永远不会猜到这是我的问题。非常感谢!
    【解决方案2】:

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

    set line1= %1
    

    【讨论】:

    • 是的,那也是错误的。我不知道为什么,但我在我写的另一个脚本中有这个,但那个脚本有效,所以我不会碰它哈哈
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多