Board logo

标题: 这段代码能不能精简一下 [打印本页]

作者: meiyongderen     时间: 2008-4-20 17:14    标题: 这段代码能不能精简一下
@echo off
for %%i in ( e ) do (
if exist %%i:\FIM\*.nc set drive=%%i&goto another
)
goto :eof
:another
ren E:\FIM\a*.NC A-.nc
ren E:\FIM\b*.NC B-.nc
ren E:\FIM\c*.NC C-.nc
ren E:\FIM\d*.NC D-.nc
ren E:\FIM\e*.NC E-.nc
ren E:\FIM\f*.NC F-.nc
ren E:\FIM\g*.NC G-.nc
ren E:\FIM\h*.NC H-.nc
ren E:\FIM\i*.NC I-.nc
ren E:\FIM\j*.NC J-.nc
ren E:\FIM\k*.NC K-.nc
ren E:\FIM\l*.NC L-.nc
ren E:\FIM\m*.NC M-.nc
ren E:\FIM\n*.NC N-.nc
ren E:\FIM\o*.NC O-.nc
ren E:\FIM\p*.NC P-.nc
ren E:\FIM\q*.NC Q-.nc
ren E:\FIM\r*.NC R-.nc
ren E:\FIM\t*.NC T-.nc
ren E:\FIM\u*.NC U-.nc
ren E:\FIM\v*.NC V-.nc
ren E:\FIM\w*.NC W-.nc
ren E:\FIM\x*.NC X-.nc
ren E:\FIM\y*.NC Y-.nc
ren E:\FIM\z*.NC Z-.nc
ren E:\FIM\1*.NC 1-.nc
ren E:\FIM\2*.NC 2-.nc
ren E:\FIM\3*.NC 3-.nc
ren E:\FIM\4*.NC 4-.nc
ren E:\FIM\5*.NC 5-.nc
ren E:\FIM\6*.NC 6-.nc
ren E:\FIM\7*.NC 7-.nc
ren E:\FIM\8*.NC 8-.nc
ren E:\FIM\9*.NC 9-.nc
ren E:\FIM\0*.NC 0-.nc

作者: plp626     时间: 2008-4-20 17:23
可以精简,但是ren E:\FIM\a*.NC A-.nc
这些命令不对吧,
所有的a*.NC 都命名为一个A-.nc?

作者: meiyongderen     时间: 2008-4-20 17:27
是的

作者: plp626     时间: 2008-4-20 17:31
那是不可能的,会保存已经存在一个同名文件

除非你那里只要一个那样的文件

作者: meiyongderen     时间: 2008-4-20 17:34
能不能用累加的方法,...比如A-1 A-2

作者: meiyongderen     时间: 2008-4-20 17:36
@echo off
set num=0
for /f "delims=" %%i in ('dir /a-d /b e:\FIM\*.nc') do (
if not exist "e:\yiming\%%i" (
copy "e:\FIM\%%i" e:\yiming>nul
) else call :copy_nc "e:\FIM\%%i" "%%~ni" %%~xi
)


:copy_NC
set file_n=%2
set "file_n=%file_n:~1,-1%"
set file_x=%3
set /a num+=1
if not exist "e:\yiming\%file_n%%num%%file_x%" (
copy %1 "e:\yiming\%file_n%%num%%file_x%">nul
) else call :copy_nc %1 "%file_n%" %file_x%
set num=0




这个代码正好可以累加了,...呵呵,..能不能整体精简一下

作者: plp626     时间: 2008-4-20 17:50
--------------a.txt
a A
b B
c C
...
--------------
cd E:\FIM\
for /f "tokens=1-2" %%i in (a.txt)do for %%a in (%%i*.nc)do call:ren "%%a" %%j
pause&exit
:ren
ren "%~1" %2_%n%.nc||goto:ren1
goto:eof
:ren1
set/a n=1
:ren2
if exist %2_%n%.nc set/a n+=1&goto:ren2
goto:ren

Last edited by plp626 on 2008-4-20 at 05:54 PM ]

作者: meiyongderen     时间: 2008-4-20 17:54
怎么用,..我是很菜很菜的鸟,....能把2段代码加在一起发上来吗

作者: plp626     时间: 2008-4-20 17:57
我的代码只当你E:\FIM\目录下有大量的a*.NC ,b*.NC....

也没法测试,

作者: meiyongderen     时间: 2008-4-20 18:00
改不了文件名

作者: plp626     时间: 2008-4-20 18:05
你得手动先写个a.txt里面的内容为:
a A
b B
c C
...
9 9

作者: meiyongderen     时间: 2008-4-20 18:06
写了,.但就是改不了名字,...能不能把上面那些代码加一起发给我

作者: plp626     时间: 2008-4-20 18:12
for /f "tokens=1-2" %%i in (a.txt)do for %%a in (E:\FIM\%%i*.nc)do call:ren "%%a" %%j
pause&exit
:ren
ren "%~1" %2_%n%.nc||goto:ren1
goto:eof
:ren1
set/a n=1
:ren2
if exist %2_%n%.nc set/a n+=1&goto:ren2
goto:ren

作者: meiyongderen     时间: 2008-4-20 18:29
可以改了,...呵呵,.. 但是你改成了A_ 而不是 A- 能不能再修改一下??

作者: plp626     时间: 2008-4-20 18:36
把_换成-

作者: meiyongderen     时间: 2008-4-20 18:42
已经改了,.呵呵,...谢谢,.我想问一下,...如果想再加上 ren E:\FIM\A?A*.NC AA-.nc

这样应该怎么加上去..

作者: plp626     时间: 2008-4-20 18:47
我现在很忙。

你不是新手,自己学习,不得已再找人帮忙。

作者: meiyongderen     时间: 2008-4-20 18:50
对这方面我真的不懂,....正在努力学习ING,,,,, 赐教一下好吗,我是新手,..学习DOS一个小时了,能看的懂一点点,.