【问题标题】:Batch script with spaces in folder path文件夹路径中带有空格的批处理脚本
【发布时间】:2017-10-16 10:42:32
【问题描述】:

我编写了以下代码以从多个文件夹(文件夹 1、文件夹 2 等)中删除文件和子文件夹。当文件夹名称中没有空格时,脚本可以成功运行,但是无法删除临时文件(files2del.txt)和子文件夹,如果有空格。路径以点结尾。

@echo off

setlocal EnableDelayedExpansion

set folder[0]=Folder 1
set folder[1]=Folder 2

for /l %%s in (0,1,1) do (
  set "var=C:\directory\!folder[%%s]!"
  dir "!var!"/s/b/a | sort /r >> !var!\files2del.txt
  for /f "delims=;" %%D in (!var!\files2del.txt) do (del /q "%%D" & rd "%%D")
  pause
)
exit

下面这行似乎是问题所在。

for /f "delims=;" %%D in (!var!\files2del.txt) do (del /q "%%D" & rd "%%D")

我尝试了各种方法,例如 %、引号等,但无济于事。

谢谢

【问题讨论】:

    标签: file batch-file directory spaces


    【解决方案1】:

    尝试:

    for /f "usebackq delims=;" %%D in ("!var!\files2del.txt") do (del /q "%%D" & rd "%%D")
    

    当使用usebackq 选项时,您可以在读取文件时使用双引号。虽然FOR /? 消息中没有提到它。

    【讨论】:

    • 来自FOR 命令帮助文件的usebackq 部分:允许在文件集中使用双引号来引用文件名
    猜你喜欢
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多