2011-01-11 206 views
3

我希望批处理脚本处理文件夹中的所有文本文档。 这是我迄今管理:在批处理脚本中循环遍历文件名

@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 

回答

11

主要问题似乎(%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 =路径(\ Users \用户家庭\桌面\实施例)
n =文件名( test1)(没有扩展名)

f =完整文件名(C:\ Users \ Family \ Desktop \ Example \ test1.txt)。

可能的修饰符在这里解释FOR /?

+0

谢谢你,完美的工作。 你能解释一下%%〜dpfX吗? – Krayons 2011-01-11 23:56:02