作者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
1F:推 LPH66:你的count不会加的原因在set的求助里有说明 140.112.250.80 01/18 15:15
2F:→ LPH66:不过那要在呼叫cmd时加上/v 140.112.250.80 01/18 15:16
3F:→ LPH66:才能够用一个特殊的语法解决 140.112.250.80 01/18 15:17
4F:→ oohay:我了解了,谢谢 59.112.228.167 01/18 17:39