【问题标题】:Batch script: how to read file with spaces in for loop批处理脚本:如何在 for 循环中读取带有空格的文件
【发布时间】:2017-11-07 17:15:31
【问题描述】:

如何读取带空格的文件名,

基本上一个文件夹将包含具有不同扩展名的相同文件名,我想删除一个扩展名为 .csv.completed 的文件。

例如

abc t1.xlsx
abc t1.csv.completed

以下代码无法正常显示其给出的消息.... 系统找不到文件C:\Users\demo\Desktop\des_cp\"*.xlsx"。

脚本

@echo off

for /F "usebackq delims==" %%I in ("C:\Users\demo\Desktop\des_cp\*.xlsx") do (
    if exist "C:\Users\demo\Desktop\des_cp\%%~nl.completed" del %%I
)

【问题讨论】:

  • del "%%I" ...
  • 这里有一个错字:%%~nl。那应该是:%%~nI
  • 再次收到消息.... 系统找不到文件 C:\Users\demo\Desktop\des_cp*.xlsx。将 %%~nl 更改为 %%~n 和大写字母 I
  • des_cp 后面少了一个斜线。
  • 您的代码中还缺少 csv 扩展名:%%~nI.csv.completed

标签: batch-file filenames spaces


【解决方案1】:

这段代码应该可以工作。

@echo off

for %%I in ("C:\Users\demo\Desktop\des_cp\*.xlsx") do (
    if exist "C:\Users\demo\Desktop\des_cp\%%~nI.csv.completed" del "C:\Users\demo\Desktop\des_cp\%%~nxI"
)

【讨论】:

    【解决方案2】:

    for /f 处理文件的内容。要处理文件(文件名),请使用普通的for

    for %%I in ("C:\Users\demo\Desktop\des_cp\*.xlsx") do echo %%I
    

    【讨论】:

    • 它不起作用...我收到的消息 命令的语法不正确。 C:\Users\demo\Desktop\des_cp>for %I in ("C:\Users\demo\demo\des_cp*.xlsx") 做
    • do之后还有什么吗?不应该有` between des_xp`和*.xlsx吗?
    • yes for /F "usebackq delims=" %%I in ("C:\Users\demo\Desktop\des_cp*.xlsx") 做(如果存在 "C:\Users\demo\桌面\des_cp\%%~nI.completed" del "%%I")
    • @Sbanga,他只是告诉你不要使用 FOR /F 或其选项。
    猜你喜欢
    • 2012-08-29
    • 1970-01-01
    • 2016-05-17
    • 2013-10-01
    • 2011-08-26
    • 2020-11-13
    • 2023-03-06
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多