作者LIAR (玻璃做的大叔)
看板EZsoft
标题[请问] for要如何只抓第一行&使用者输入?
时间Fri Nov 7 01:07:48 2014
这和其他的「小软体」不一样,不过是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的参数,我想请问我应该要如何修改才能达成前面说的要求?
--
起初,他们追杀共产主义者,我没有说话,因为我不是共产主义者;
接着,他们追杀犹太人,我没有说话,因为我不是犹太人;
後来,他们追杀工会成员,我没有说话,因为我不是工会成员;
此後,他们追杀天主教徒,我没有说话,因为我是新教教徒;
最後,他们奔我而来,却再也没有人站起来为我说话了。
《First They Came(他们首次来时)》,Martin Niemoller牧师(1892-1984)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.176.36.155
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/EZsoft/M.1415293671.A.EDF.html
1F:→ tsaiminghan: 第二个问题,因为for回圈内的变数,不能用%% 11/08 11:06
3F:→ tsaiminghan: ph 11/08 11:08
4F:→ tsaiminghan: 要用!!,且要设SETLOCAL ENABLEDELAYEDEXPANSION 11/08 11:09
5F:→ tsaiminghan: 我一直觉得window不知道在搞什麽cmd语法超难用 11/08 11:09
6F:→ LIAR: 同感,谢谢。 12/01 00:04