中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 16:48
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » [原创]sturts和jsf框架国际化的中文资源转换
可打印版本  1,198 / 2
第1楼 wentimao 发表于 2006-06-07 20:07
初级用户 发帖 27 积分 110
[原创]sturts和jsf框架国际化的中文资源转换
这几天在论坛发帖询问,根据大家的帮助制作的批处理,主要用于sturts和jsf框架国际化的中文资源文件转换,大家看看,还有什么地方需要改正优化的?大家也不要在我以前发的帖子解答了

willsort 看看这句
if exist "%~f1\" goto error
if not exist "%~f1" goto error
本来这个是防止输入的参数是文件夹的情况,但这个就像我说的,如果在当前文件夹里有一个aa的文件,又有一个aa的文件夹,我的这两句是不是就失败了?
你提出了一个方法就是
for /f "usebackq" in ("%~f1") do ...)2>nul
这种方法是什么意思呢?不管它是文件还是目录都去操作,弄错了就屏蔽?是这个意思吗?不太明白,希望能解释一下



与本主题相关的讨论如下:

如何获得文件的完整路径?
http://www.cn-dos.net/forum/viewthread.php?tid=20996

如何判断参数是文件还是目录
http://www.cn-dos.net/forum/viewthread.php?tid=20999

如何把环境变量path中的路径逐个读出来?
http://www.cn-dos.net/forum/viewthread.php?tid=21008

如何全盘查找某文件并把它的路径加到环境变量中
http://www.cn-dos.net/forum/viewthread.php?tid=21013

如何在批处理用命令行来改变%1的值?
http://www.cn-dos.net/forum/viewthread.php?tid=21014

如何在dir未找到时文件时不显示错误提示
http://www.cn-dos.net/forum/viewthread.php?tid=21021

[ Last edited by willsort on 2006-6-14 at 17:45 ]
第2楼 willsort 发表于 2006-06-14 18:21
元老会员 发帖 1,512 积分 4,432
Re wentimao:

非常抱歉!将兄的这篇原创主题忽略了如此之久!现已将主题稍作整理,修改标题,红色下划线高亮,奖励16积分。

关于同名文件和文件夹的存在性判断,我仍持上文相关回复中 [2] 的观点,不要去理会它,除非真有理会它的必要。

关于我后来提出的 for/f 方案大抵如兄所说:for /f "usebackq"要求("")内必须是文件名,否则将无法读取其文本内容,从而显示错误信息,而后的)2>nul 可以将错误信息屏蔽。

关于这个方案存在一些缺陷,已知的是,若将文件存在后的操作放在 do 后,将可能因为文件存在多行文本而被执行多次。改进后的方案如下:

for /f "usebackq" %%f in ("%~f1") do set) >nul 2>nul || echo 不存在文件 %~f1

Re Others:

感到比较奇怪的是,无论是否存在 %~f1 , for /f 都不修改 %errorlevel% ,但是其后的 && 或者 || 则仍然是正常有效的,这是否意味着,&& 和 || 的条件并非依赖于 %errorlevel%?
第3楼 wentimao 发表于 2006-06-15 07:54
初级用户 发帖 27 积分 110
我把查找那段代码按一位仁兄的方法修改,这样不用创建临时文件,觉得方便不少 


set x="sbl"
for %%i in (native2ascii.exe) do if exist %%~$PATH:i set x=%%~$PATH:i
if not %x% == "sbl" goto :pass
echo.
echo path路径中不包括native2ascii.exe文件的路径,本程序现在自动在所有的驱动器
echo 寻找native2ascii所在目录,此过程可能需要一段时间,请稍候....
echo.
echo.
echo 搜索中......
echo.
echo.
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
(for /f "delims=" %%p in ('dir /a /b /s %%i:\native2ascii.exe') do (
echo 找到%%p
set path=%path%;%%~dpp&&goto :pass
)) 2>nul
)
echo.
echo 你的电脑不存在native2ascii.exe文件,无法完成转换。
echo.
goto :end
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023