windows - Windows 批处理中的 %%I 不管理带空格的名称

标签 windows batch-file

在 Windows 10 中,我需要在文件夹中的子文件夹名称上进行批处理,我做了以下操作,但问题是 %%我不管理带空格的文件夹名称,它只需要第一部分:

@echo off
FOR /F %%I IN ('dir /b C:\Users\Thomas\Music') DO (
    ECHO %%I)

如果文件夹“Music”包含文件夹“My music”,则 echo %%I 将只打印“My”。

最佳答案

FOR /F "delims=" %%I IN ('dir /b /ad C:\Users\Thomas\Music') DO (

... 并在要使用名称包含空格的地方使用 "%%I"(即引用构造的字符串)——适用于任何批处理使用包含分隔符的字符串的原则像空间

/ad 选择目录名而不是文件名。

再添加一个开关,/s 将扫描整个子目录树。

将字符串值赋给变量最好用

set "var=%variablefrom%"

或者对于元变量(例如代码中的循环控制变量%%I),您需要

set "var=%%I"

但是,如果您想在循环中使用分配给变量 (var) 的值,您应该调查延迟扩展(这里有很多项目)的主题。

关于windows - Windows 批处理中的 %%I 不管理带空格的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39697872/

相关文章:

php 在 Linux 上太慢?

c++ - 静态库链接失败

c++ - 使用 SYSTEMTIME、FILETIME 和 ULARGE_INTEGER 修改日期和时间值

windows - 不使用 Setup.exe 手动安装 Cygwin

r - 在 R 脚本中执行批处理文件

windows - Mercurial/extdiff 没有更改为临时目录(正如我认为的那样)

windows - 使用 VBScript 清除剪贴板

windows - 有没有办法获取我刚刚在后台启动的控制台程序的进程ID?

windows - 简单的 bat 文件记录到文本但错误

java - 对批处理文件的更改未按我预期的方式工作