![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 16:09 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 帮我修改完成一下这个批处理 |
| 可打印版本 1,194 / 6 |
| 第1楼 wentimao | 发表于 2006-06-03 21:21 |
| 初级用户 发帖 27 积分 110 | |
|
帮我修改完成一下这个批处理 基本功能已经实现,但有个问请看下帖
[ Last edited by wentimao on 2006-6-4 at 13:59 ] |
|
| 第2楼 wentimao | 发表于 2006-06-04 12:56 |
| 初级用户 发帖 27 积分 110 | |
|
以下是我自己完成的bat,但是有几个问题还要请教
1. dir/s/a/b c:native2ascii.exe>%~dp0temp.sbl如果没找到文件的信息如何不显示 2.if exist "%~f1\" goto error if not exist "%~f1" goto error 这两行,对于文件和目录都存在时,好象就不能准确的判断文件是否存在,如何判断文件的存在呢? 3 dir找不到文件时,有没有什么错误代码?来获知找到还是没找到? 再就是希望大家把我的代码优化一下,我太菜了,有很多不够最简化 @echo off rem 判断是否有第二个参数,并是不是设置path路径的? if exist "%~dp0temp.sbl" del/f "%~dp0temp.sbl" if "%~dp2"=="" goto pass if exist "%~dp2native2ascii.exe" ( set path=%path%;%~dp2 echo 添加目录到path中成功 ) rem 判断是文件还是上目录,因为要对文件操作,判断%1有效性 :pass if exist "%~f1\" goto error if not exist "%~f1" goto error %~d1 cd %~p1 rem 初始化参数x,然后去path设置的目录找有没有需要的文件 set x="sbl" for %%i in (native2ascii.exe) do if exist %%~$PATH:i set x=%%~$PATH:i if not %x% == "sbl" goto pass2 echo path路径中不包括native2ascii.exe文件的路径,本程序现在自动搜索驱动器C:、D:、E:, echo 寻找native2ascii所在目录,此过程可能需要一段时间,请稍候.... echo. echo. echo 搜索中...... echo. echo. dir/s/a/b c:native2ascii.exe>%~dp0temp.sbl dir/s/a/b d:native2ascii.exe>>%~dp0temp.sbl dir/s/a/b e:native2ascii.exe>>%~dp0temp.sbl rem 找不到退出,否则重新执行bat,并根据参数2设置目录 for /f %%i in (%~dp1temp.sbl) do set aa=%%i if "%aa%"=="" ( echo 你的电脑不存在native2ascii.exe文件,无法完成转换。 goto end ) for /f %%i in (%~dp1temp.sbl) do %0 %1 %%~dpi rem 执行真正的操作 :pass2 native2ascii -encoding gb2312 "%~f1" ApplicationResources_zh_CN.properties echo 转换成功!!! goto end rem 参数%1无效时,重输,然后重启bat :error echo. echo. echo 你没有输入需要转换的文件名,或该文件名不存在! echo. set /p file=请输入要转换的文件名(退出请输exit): %0 %file% rem 结束 :end pause @echo on [ Last edited by wentimao on 2006-6-4 at 14:01 ] |
|
| 第3楼 LanCat | 发表于 2006-06-04 21:21 |
| 中级用户 发帖 78 积分 288 | |
|
第一个问题,可以在 dir 前加 if exist 判断。
第二个问题,目录为 if exist c:\winnt\nul,文件为 if exist c:\winnt\*.* 第三个问题,即然都知道用 if exist 命令了,这个问题自然就解决了。 |
|
| 第4楼 wentimao | 发表于 2006-06-04 22:23 |
| 初级用户 发帖 27 积分 110 | |
|
如果在同一个目录下,有个文件叫abc,同时有个目录叫abc,你用什么去判断文件和目录都是存在的?
|
|
| 第5楼 Jneny | 发表于 2006-06-05 02:54 |
| 高级用户 发帖 318 积分 686 | |
|
判断目录应该是 if exist X:\abc\nul dir abc exit
判断文件 if exist X:\abc echo file abc exist |
|
| 第6楼 不得不爱 | 发表于 2006-06-06 11:31 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
dir/s/a/b c:native2ascii.exe>%~dp0temp.sbl 2>nul
如果没找到文件就不会的信息就不显示! |
|
| 第7楼 willsort | 发表于 2006-06-06 18:19 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re wentimao:
请楼主注意发表主题的秩序。 主题的标题乃是“题眼”,如果随意处理会导致答复者对主题留下比较坏的第一印象,而且毫无意义的主题,将使后来者难于借鉴你解决问题的经验。 对于求助性主题,一个主题等同于一个问题,所有与某一特定问题相关的问答都应集中在一个主题中,而与此无关的问答,则应另发新主题。多个问题集中于一个主题,将使答复的重复使用率大大降低,而且也对标题的准确性和针对性提出了挑战。 请不要删除已经解决的问题,这样可能会使后面的答复变成空中楼阁;与此相反地,如果你的问题已经解决了,即时是你自己解决的,也请最好回帖告知大家你采用的是何种方法和方案。 第一个问题,你已经用新主题发表并且得到正确回复,这里不再赘述。 第二个问题,你也曾发表新主题提及,我将在彼主题中进行回复,5楼的答复存在一些问题。 第三个问题,在NT下的cmd中,dir是有errorlevel的,未找到文件时为1,成功时为0; 这个问题如何解决? http://www.cn-dos.net/forum/viewthread.php?tid=21021 如何判断参数是文件还是目录 http://www.cn-dos.net/forum/viewthread.php?tid=20999 [ Last edited by willsort on 2006-6-6 at 18:29 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |