作者oohay (五黑)
看板Programming
標題Re: [問題] Dos AutoBatch
時間Fri Jan 18 13:40:36 2008
※ 引述《TwoDemon (店小二)》之銘言:
: 如果將一個目錄下一次移10個檔至另一個目錄。
: 我原來的寫法是全移: move D:\test1\*.txt C:\test2\
: 但現在要改成一次最多只移10個檔。
: 但,要怎麼寫成一個完整可以運作的script,希望版上高手幫幫忙,謝謝!
如果認真要寫,以目前現存以及殘存的系統來說,
要看很多種DOS shell script版本.
目前在Windows XP的HP修正版本(筆記型電腦加裝了HP修改版的Windows說明檔),
程式架構大概是:
@echo off
setlocal
set count=0
for /f "usebackq" %%s in (`dir /b`) do set /a count=%count%+1 & echo %count% %%s
endlocal
@echo on
這樣輸出的答案應該是每行有一個行號與一個檔名.
然後可能可以根據find命令來找出1到10行.
*但是!!!* 上述程式在我的電腦印出行號全都是0, 在for中每次
set /a count=%ccount%+1並不立刻修改到count內容,
在命令列中輸入
for /f "usebackq" %s in (`dir /b`) do set /a count=%count%+1 & echo %count% %s
就看得出來,每次set /a count=%count%+1答案都一樣,而後來
echo %count% %s的行號也都一樣,實在沒什麼辦法.
如果可以把for /l %i in (1,1,10) do echo %i與
for /f "usebackq" %s in (`dir /b`) do echo %s適當地結合,
也許還做得下去.
另一個問題是,如果在XP的shell做得出來,也不敢保證在MS-DOS 6.22也能這樣用...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.228.167
推 LPH66:你的count不會加的原因在set的求助裡有說明 140.112.250.80 01/18 15:15
→ LPH66:不過那要在呼叫cmd時加上/v 140.112.250.80 01/18 15:16
→ LPH66:才能夠用一個特殊的語法解決 140.112.250.80 01/18 15:17
→ oohay:我了解了,謝謝 59.112.228.167 01/18 17:39