中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]sturts和jsf框架国际化的中文资源转换
作者:
标题: [原创]sturts和jsf框架国际化的中文资源转换 上一主题 | 下一主题
wentimao
初级用户





积分 110
发帖 27
注册 2006-6-3
状态 离线
『楼 主』:  [原创]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
这种方法是什么意思呢?不管它是文件还是目录都去操作,弄错了就屏蔽?是这个意思吗?不太明白,希望能解释一下
@echo off
cls
echo.
echo.
echo                                         中文资源转换批处理
echo =====================================================
echo.使用说明:
echo.
echo ⒈可以直接把要转换的源文件复制然后在批处理上点右键粘贴,
echo 生成的ApplicationResources_zh_CN.properties和messages_
echo zh_CN.properties文件会自动保存到和源文件同一目录下。
echo.
echo ⒉击批处理,然后输入源文件的完整路径,如源文件与批处理
echo 在同一目录下,则只要打源文件名就可以,同样完成转换。
echo .
echo ⒊在dos下,输入批处理名,后面加源文件的路径和文件名同样
echo 完成转换,同样,同一目录下时,可不打路径。
echo.
echo ⒋当native2ascii.exe没有在path中设置时,会自动到本地的
echo 所有驱动器查找并添加到path中,完全智能。
echo.
echo 建议把此批处理文件放到桌面上,然后使用第一种方法生成。
echo.=====================================================
:start
if "%~1"=="exit" goto end
if exist "%~dp0temp.sbl" del/f "%~dp0temp.sbl"
if exist "%~f1\" goto error
if not exist "%~f1" goto error
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 (
cd %%i:\
dir /a /b /s %%i:native2ascii.exe>%~dp0temp.sbl 2>nul && goto add
)
echo.
echo 你的电脑不存在native2ascii.exe文件,无法完成转换。
echo.
goto end
:add
for /f "tokens=*" %%i in (%~dp0temp.sbl) do (
path=%path%;%%~dpi
echo 找到%%i
)
del %~dp0temp.sbl>nul 2>nul
:pass
%~d1
cd %~p1
native2ascii -encoding gb2312 "%~f1" ApplicationResources_zh_CN.properties
copy/y ApplicationResources_zh_CN.properties messages_zh_CN.properties
echo.
echo 转换成功!!!
echo.
goto end
:error
echo.
echo.
echo 你没有输入需要转换的文件名,或该文件名不存在!
echo.
set /p file=请输入要转换的文件名(退出请输exit):
call :start %file%
:end
@echo on
与本主题相关的讨论如下:

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

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

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

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

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

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

[ Last edited by willsort on 2006-6-14 at 17:45 ]

   此帖被 +16 点积分        点击查看详情   




xp,cmd
2006-6-7 20:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 2 楼』:  

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%?



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-14 18:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wentimao
初级用户





积分 110
发帖 27
注册 2006-6-3
状态 离线
『第 3 楼』:  

我把查找那段代码按一位仁兄的方法修改,这样不用创建临时文件,觉得方便不少 


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



xp,cmd
2006-6-15 07:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: