我想要一个文件夹中所有文本文档的批处理脚本。 这是我到目前为止所管理的:
@ECHO off
title Test
set dir1=C:\Users\Family\Desktop\Example
:Start
cls
echo 1. test loop
echo 2. Quit
set /p choice=I choose (1,2):
if %choice%==1 goto test
if %choice%==2 exit
:test
cls
echo running loop test
FOR %%n in (%dir1% *.txt) DO echo %dir1%\%%n
echo Done
pause
我想要输出的是:
running loop test
C:\Users\Family\Desktop\Example\doc 1.txt
C:\Users\Family\Desktop\Example\doc 2.txt
Done
但我明白了:
running loop test
C:\Users\Family\Desktop\Example\C:\Users\Family\Desktop\Example
C:\Users\Family\Desktop\Example\doc 1.txt
C:\Users\Family\Desktop\Example\doc 2.txt
Done
最佳答案
主要问题似乎是 (%dir1% *.txt) 之间的空格
可能是
@ECHO off
title Test
set "dir1=C:\Users\Family\Desktop\Example"
:Start
cls
echo 1. test loop
echo 2. Quit
set /p choice=I choose (1,2):
if %choice%==1 goto test
if %choice%==2 exit
:test
cls
echo running loop test
FOR %%X in ("%dir1%\*.txt") DO echo %%~dpnX
echo Done
pause
引号是为了避免路径中出现空格或其他特殊字符的问题。
编辑:
%%~dpnX
用于将%%X
的文件名扩展为
d
=驱动器(C:)
p
=path(\Users\Family\Desktop\Example)
n
=文件名(test1) (没有扩展名)
f
=完整文件名(C:\Users\Family\Desktop\Example\test1.txt)。
此处解释了可能的修饰符 FOR/?
关于windows - 在批处理脚本中循环遍历文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663928/