![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 07:25 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 我是学批处理的新手,有事请教大家... |
| 可打印版本 770 / 5 |
| 第1楼 xiaolai | 发表于 2007-11-01 11:31 |
| 初级用户 发帖 19 积分 49 | |
|
我是学批处理的新手,有事请教大家... 请问,如何利用批处理来选择性运行某条命令?就是说在里面已经写了命令了,我想通过按指定的键来运行,有高手可以教教小菜吗?
我觉得DOS批处理真的是样好东西,哎,昨天晚上才弄懂:和goto的命令... 自己写了个: @echo off :jun explorer http://www.x-zhu.tk(我的站点) goto jun 自己写的无限大开我的网站的批处理恶作剧... DOS批处理的强大功能,让我爱不释手... |
|
| 第2楼 leo1984 | 发表于 2007-11-01 11:47 |
| 初级用户 发帖 43 积分 96 | |
|
拿dos來捉弄別人不大好吧@@
我也是新手,但是你可以參考一下別人寫的指令 @echo off ::ver beat1.3 setlocal enabledelayedexpansion mode con lines=26 color 1f for /f "delims=" %%i in ("%0") do set cdname=%%~dpi :star cls title 批次檔案改名 echo. echo ============================================================== echo. echo 批次檔案改名 測試版 echo. echo 歡迎使用,請選擇選項(1,2,3,4,5,6,7,8) echo. echo 1.簡單改名 echo 2.剔除字元 echo 3.加入字元 echo 4.取代字元 echo 5.改副檔名 echo 6.使用說明 echo 7.關於作者 echo 8.退 出 echo 9.設定路徑 echo 0.返回選單 echo. echo 工作路徑:%cdname% echo. echo bbs.cn-dos.net echo ============================================================== echo. set no=: set /p no= 請選擇: set "no=%no:"=%" if "%no%"==":" goto star if "%no%"=="1" goto 1 if "%no%"=="2" goto 2 if "%no%"=="3" goto 3 if "%no%"=="4" goto 4 if "%no%"=="5" goto 5 if "%no%"=="6" goto 6 if "%no%"=="7" goto 7 if "%no%"=="8" goto 8 if "%no%"=="9" goto 9 if "%no%"=="0" goto 0 goto star :1 cls title 批次檔案改名-簡單改名 echo. echo ============================================================== echo. echo 批次檔案改名-簡單改名 echo. echo 簡單改名:一般用於多集電視劇或是多個檔案批次改名。 echo 例 子:如:那天 颱風01.語 字.d-vb.rmvb echo 結果為:01.rmvb echo 注意事項:1。不接納檔名中出現多個「1」的檔案 echo 2。支援拖放檔案,拖放不用設定路徑 echo 3。如未設定路徑,使用默認路徑 echo. echo 工作路徑:%cdname% echo. echo 8.退 出 9.設定路徑 0.返回選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. set oldname=: set /p oldname= 請輸入舊的檔名(第一集): set "oldname=%oldname:"=%" if "%oldname%"==":" goto 1 if "%oldname%"=="8" goto 8 if "%oldname%"=="9" goto 9 if "%oldname%"=="0" goto 0 if "%oldname%"=="1" goto no for /f "tokens=1* delims=1" %%i in ("%oldname%") do ( set name=%%~ni set name1=%%~nj set cdname=%%~dpi ) if "%cdname%"=="" goto no cd /d %cdname% dir /s/b/a-d . |find "%oldname%" >nul|| goto no echo %name1% |find "1" >nul && goto no if "%name%"=="" goto no if "%name:~-1%"=="0" set "name=%name:~0,-1%" if "%name%"=="" goto no if "%name:~-1%"=="0" set "name=%name:~0,-1%" if "%name%"=="" goto no for /f "usebackq delims=" %%i in (`dir /s/b/a-d .`) do ( set var=%%~nxi set "var=!var:%name%=!" ren "%%i" "!var!" >nul 2>nul ) for /f "usebackq delims=" %%i in (`dir /s/b/a-d .`) do ( set var=%%~nxi set "var=!var:%name1%=!" ren "%%i" "!var!" >nul 2>nul ) goto ok :2 cls title 批次檔案改名-剔除字元 echo. echo ============================================================== echo. echo 批次檔案改名-剔除字元 echo. echo 剔除字元:一般用於多個檔案批次剔除指定字串改名。 echo 例 子:如:那天 颱風01.語 字.d-vb.rmvb echo 取代:vb echo 結果:那天 颱風01.語 字.d-.rm echo 注意事項:1。字串區分大小寫,支援取代空格 echo 2。剔除範圍內含檔案副檔名 echo 3。不支援特殊字元/\:*"?|<> echo. echo 工作路徑:%cdname% echo. echo 8.退 出 9.設定路徑 0.返回選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. set oldname=: set /p oldname= 請輸入要剔除的字串(區分大小寫): set "oldname=%oldname:"=%" if "%oldname%"==":" goto 2 if "%oldname%"=="8" goto 8 if "%oldname%"=="9" goto 9 if "%oldname%"=="0" goto 0 dir /s/b/a-d . |find "%oldname%" >nul|| goto no for /f "usebackq delims=" %%i in (`dir /s/b/a-d .`) do ( set var=%%~nxi set "var=!var:%oldname%=!" echo %%i |find "批次檔案改名.bat" >nul ||ren "%%i" "!var!" >nul 2>nul ) goto ok :3 cls title 批次檔案改名-加入字元 echo. echo ============================================================== echo. echo 批次檔案改名-加入字元 echo. echo 加入字元:一般用於多個檔案批次加入指定字串改名。 echo 例 子:如:那天 颱風01.語 字.d-vb.rmvb echo 加入: echo 結果:那天 颱風01.語 字.d-vb.rmvb echo 注意事項:1。字串區分大小寫,支援加入「 」「.」 echo 2。加入的字元都在原檔名首部 echo 3。不支援特殊字元/\:*"?|<> echo. echo 工作路徑:%cdname% echo. echo 8.退 出 9.設定路徑 0.返回選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. set newname=: set /p newname= 請輸入要加入的字串: set "newname=%newname:"=%" if "%newname%"==":" goto 3 if "%newname%"=="8" goto 8 if "%newname%"=="9" goto 9 if "%newname%"=="0" goto 0 dir /s/b/a-d . |find /v "批次檔案改名.bat" >nul|| goto no for /f "usebackq delims=" %%i in (`dir /s/b/a-d .`) do echo %%i |find "批次檔案改名.bat" >nul ||ren "%%i" "%newname%%%~nxi" >nul 2>nul goto ok :4 cls title 批次檔案改名-取代字元 echo. echo ============================================================== echo. echo 批次檔案改名-取代字元 echo. echo 取代字元:一般用於多個檔案批次取代指定字串改名。 echo 例 子:如:那天 颱風01.語 字.d-vb.rmvb echo 尋找: echo 取代: echo 結果:那天 颱風01.語 字.d-vb.rmvb echo 注意事項:1。字串區分大小寫,支援取代「 」「.」 echo 2。取代範圍內含檔案副檔名 echo 3。不支援特殊字元/\:*"?|<> echo. echo 工作路徑:%cdname% echo. echo 8.退 出 9.設定路徑 0.返回選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. set oldname=: set /p oldname= 請輸入要尋找的字串: set "oldname=%oldname:"=%" if "%oldname%"==":" goto 4 if "%oldname%"=="8" goto 8 if "%oldname%"=="9" goto 9 if "%oldname%"=="0" goto 0 echo. set newname=: set /p newname= 請輸入要取代的字串: set "newname=%newname:"=%" if "%newname%"==":" goto 4 if "%newname%"=="8" goto 8 if "%newname%"=="0" goto 0 dir /s/b/a-d . |find "%oldname%" >nul|| goto no for /f "usebackq delims=" %%i in (`dir /s/b/a-d .`) do ( set var=%%~nxi set "var=!var:%oldname%=%newname%!" echo %%i |find "批次檔案改名.bat" >nul ||ren "%%i" "!var!" >nul 2>nul ) goto ok :5 cls title 批次檔案改名-改副檔名 echo. echo ============================================================== echo. echo 批次檔案改名-改副檔名 echo. echo 修改後綴:一般用於多個檔案批次修改後綴(檔案副檔名)。 echo 例 子:如:那天 颱風01.語 字.d-vb.rmvb echo 新副檔名:rm echo 結果:那天 颱風01.語 字.d-vb.rm echo 注意事項:1。字串區分大小寫,支援取代「 」「.」 echo 2。取代範圍只是檔案副檔名 echo 3。刪除副檔名請輸入空格 echo 3。不支援特殊字元/\:*"?|<> echo. echo 工作路徑:%cdname% echo. echo 8.退 出 9.設定路徑 0.返回選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. set newname=: set /p newname= 請輸入新的副檔名: set "newname=%newname:"=%" if "%newname%"==":" goto 5 if "%newname%"=="8" goto 8 if "%newname%"=="9" goto 9 if "%newname%"=="0" goto 0 dir /s/b/a-d . |find /v "批次檔案改名.bat" >nul|| goto no for /f "usebackq delims=" %%i in (`dir /s/b/a-d .`) do ( set var=%%~nxi set "var=!var:%%~xi=.%newname%!" echo %%i |find "批次檔案改名.bat" >nul ||ren "%%i" "!var!" >nul 2>nul ||ren "%%i" "%%~ni.%newname%" ) goto ok :6 cls title 批次檔案改名-說明 echo. echo ============================================================== echo. echo 批次檔案改名 測試版 echo. echo 1.簡單改名:對於相對簡單、類似的檔案的改名。如:電視劇等 echo 2.剔除字元:剔除檔名中指定字元或字串 echo 3.加入字元:增加指定字元或字串在原檔名的首部 echo 4.取代字元:取代檔名中指定字元 echo 5.改副檔名:修改原檔案的副檔名 echo 6.使用說明:請將此程式放在需要改名檔案的目錄內使用 echo 7.關於作者:程式作者聯繫模式 echo 8.退 出:離開程式 echo 9.設定路徑:設定該程式工作路徑。默認為此程式所在路徑 echo 0.返回選單:返回程式主選單 echo. echo 任意鍵返回主選單 echo. echo bbs.cn-dos.net echo ============================================================== echo. pause >nul goto star :7 cls title 批次檔案改名-關於作者 echo. echo ============================================================== echo. echo 批次檔案改名 測試版 echo. echo 本軟體為免費軟體歡迎大家使用~! echo 此軟體用批次處理寫成,軟體現在為測試階段,難免存在錯誤。 echo 歡迎大家提出寶貴意見,以便本人及時改進。 echo 本人不會寫程式,但是是個批次處理狂熱愛好者,希望和您交流。 echo 學習過程中得到大家不少說明,感謝willsort,namejm等等。 echo. echo. echo a9319751 zzlike@163.com QQ:5040366 echo. echo 任意鍵返回主選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. pause >nul goto star :8 title 批次檔案改名-Good Luck cls echo. echo ============================================================== echo. echo. echo. echo Good Luck echo. echo. echo. echo. echo. echo Bye~~ echo. echo. echo. echo ============================================================== echo. ping -n 3 127.0.0.1 >nul exit :9 cls title 批次檔案改名-設定路徑 echo. echo ============================================================== echo. echo 批次檔案改名-設定路徑 echo. echo 設定路徑:設定程式工作路徑。 echo 例 子:如:c:\windows echo 結果:程式會在"c:\windows"目錄下工作 echo 包括子目錄。 echo 注意事項:1。直接換行字元使用目前工作路徑 echo 2。全部工作包括子目錄 echo 3。支援拖放目錄 echo. echo 工作路徑:%cdname% echo. echo 8.退 出 9.設定路徑 0.返回選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. set /p cdname= 請輸入路徑: set "cdname=%cdname:"=%" if "%cdname%"=="8" goto 8 if "%cdname%"=="9" goto 9 if "%cdname%"=="0" goto 0 :if "%cdname:~-1%"=="\" set "cdname=%cdname:~0,-1%" :for /f "delims=" %%i in ("%cdname%\") do set !cdname!=%%~dpi if exist "%cdname%" (cd /d "%cdname%" >nul 2>nul && set "%cdname%=%cd%" || goto no) else goto no goto star :0 cls goto star :no cls title 批次檔案改名-錯誤資訊 echo. echo ============================================================== echo. echo 批次檔案改名-錯誤資訊 echo. echo 1。此檔案、路徑不存在或是不適合此模式改名 echo 2。或是您的輸入含有特殊字元/\:*"?|<> echo 3。請嘗試其他模式 echo. echo 工作路徑:%cdname% echo. echo 任意鍵返回主選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. pause >nul goto star :ok cls title 批次檔案改名-任務完成 echo. echo ============================================================== echo. echo 批次檔案改名-任務完成 echo. echo 1。恭喜,恭喜,全部任務已完成 echo 2。任意鍵開啟已完成工作目錄! echo. echo 工作路徑:%cdname% echo. echo 任意鍵返回主選單 echo. echo. bbs.cn-dos.net echo ============================================================== echo. pause >nul start %cdname% goto star |
|
| 第3楼 jellylover | 发表于 2007-11-01 12:15 |
| 新手上路 发帖 5 积分 12 | |
|
强......
|
|
| 第4楼 xiaolai | 发表于 2007-11-01 12:52 |
| 初级用户 发帖 19 积分 49 | |
|
先谢谢你,但还没回答我的问题呢...
我是求教拉... |
|
| 第5楼 xiaolai | 发表于 2007-11-01 13:05 |
| 初级用户 发帖 19 积分 49 | |
|
版主快来吧,我等你帮帮我这个在沙漠里迷路的小菜吖...
|
|
| 第6楼 dikex | 发表于 2007-11-01 13:25 |
| 高级用户 发帖 366 积分 788 | |
|
方法有很多,2楼的代码里面已经有几处了;
放上一个不太常用的方法吧,这个对于防范非法字符不错 [ Last edited by dikex on 2007-11-1 at 01:29 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |