作者piligo (霹雳狗)
标题Re: [请问] for要如何只抓第一行&使用者输入?
时间Fri Nov 7 08:32:20 2014
※ 引述《LIAR (玻璃做的大叔)》之铭言:
: 这和其他的「小软体」不一样,不过是windows内建的应该OK吧?
: for /f "tokens=1,1,1" %%a in ('dir /b /o-g-d img*.*') do (
: set /p newname=请输入新档名:
: ren %%a "%newname%.jpg"
: )
: 我希望能够找出最新的一个img*.*档案,并且提示使用者输入新档名,
: 把这个档案改成输入的新档名。
: 目前遇到两个问题:
: 1.他不会只抓第一个档案,而是处理完第一个还会继续第二个,一直做到
: 没有符合的档名为止。
: 2.set /p的参数没有用,会被当成空白。如果是直接到命令列执行这个script,
: 则是会记到前一次执行输入的参数。
: 换句话说第一次输入"1",newname=空白,第二次执行输入"2",newname=1,
: 以此类推。
: 我没有正式学过for的参数,我想请问我应该要如何修改才能达成前面说的要求?
下面可以达成您要的效果,完全不用for
dir /b /o-g-d img*.* >check.txt
set /p a=<check.txt
set /p b=请输入新档名:
ren "%a%" "%b%.jpg"
del check.txt
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.104.197.108
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/EZsoft/M.1415320342.A.DB6.html
1F:推 LIAR: set /p a=<check.txt这步只得到a=list.txt耶? 11/07 21:39
2F:→ piligo: 您不是只要搜寻img*.* 为何会出现list.txt ??? 11/07 22:05
3F:推 LIAR: 啊!了解了,我测试时用*.*所以找到自己(我用list.txt), 11/08 00:27
4F:→ LIAR: 加上原本的img*.*就没有这问题,谢谢你。 11/08 00:28