0

我有一个简单的批处理文件拆分我的大学讲座的音频和视频。这些文件是使用另一张海报的代码获得的:

   @echo off 
setlocal enableDelayedExpansion 

set DRIVE=%cd:~0,3%
set MYDIR=%DRIVE%ToDo\ToConvert\

for /F %%x in ('dir /B/D %MYDIR%') do (
    echo %%x
    )
pause

文件标记为:

PHY2021 (1).mp4
PHY2021 (2).mp4
PHY2021 (3).mp4
etc

脚本的输出是:

PHY2021
PHY2021
PHY2021

问题似乎很明显,但找不到如何包含“空格”以及批处理中的后续内容。我已经在搜索中看到了用“下划线”替换“空格”的方法,但谁能告诉我是否有工作-大约?

4

2 回答 2

4

试试这个(使用双引号,不使用分隔符):

@echo off 
setlocal 

set "DRIVE=%cd:~0,3%"
set "MYDIR=%DRIVE%ToDo\ToConvert\"

for /F "delims=" %%x in ('dir /B/D "%MYDIR%"') do (
    echo %%x
)
pause
于 2013-06-07T07:18:09.960 回答
0

编辑:我编辑了我的答案以匹配 Endoro 的答案,因为我在那里犯了一个错误,并且为了不让未来的读者感到困惑。

FOR /F. 您需要覆盖它,如下所示:

  @echo off 
setlocal enableDelayedExpansion 

set DRIVE=%cd:~0,3%
set MYDIR=%DRIVE%ToDo\ToConvert\

for /F "delims=" %%x in ('dir /B/D %MYDIR%') do (
    echo "%%x"
    )
pause

注意. delims=_FOR /F

从官方FOR文档:

    delims=xxx      - specifies a delimiter set.  This replaces the
                      default delimiter set of space and tab.
于 2013-06-07T07:17:01.923 回答