2011-01-11 155 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