介绍
有时候需要打开记事本在末尾追加文本,如果手动找到txt文件,再打开txt文件,按 ctrl+home 到达文末,才能完成对txt文件的追加,比较繁琐。而且如果txt文件很大(比如词典文件),手动打开txt追加显然不现实。下面这个批处理程序easyadd.bat实现从控制台读入行并写入到选定的txt文件中。笔者主要用来添加词条到rime的词库文件。
使用说明:需要新建一个 path.ini 用于存储txt文件的路径条目,并且在.bat中修改 set pathfile="E:\Projects\easyadd\path.ini"
中路径为你的 path.ini 路径。
由于笔者主要用来调教词库,需要输入制表符,而控制台摁tab只会补全代码,无论如何键入不了制表符,所以只能让bat脚本识别输入中的 \t 并替换为制表符set entry=%entry:\t= %
,要输入制表符的时候输入 \t 就好了。
easyadd.bat 代码如下:
@echo off &setlocal enabledelayedexpansion
:begin
set pathfile="D:\rime\EasyAdd\path.ini"
set deployer="D:\rime\EasyAdd\deployer.exe"
for /f "eol=# tokens=1,2,3 delims= usebackq" %%a in (%pathfile%) do (set /p=[%%a]%%b^(%%c^) <nul)
echo [0]直接部署rem <1> 选择目录
:retry
set /p choice=^<标号^>
if not defined choice (set /p=<nul&goto retry)
if %choice% ==0 (echo 直接部署 & goto deploy)
for /f "eol=# tokens=3,4 delims= usebackq" %%a in (%pathfile%) do (if %%a==%choice% (set full_pathg=%%b & goto next) )
for /f "eol=# tokens=1,4 delims= usebackq" %%a in (%pathfile%) do (if %%a==%choice% (set full_pathg=%%b) )
if not defined full_pathg (set /p=<nul&goto retry)
:next
call :deal %full_pathg%rem <2> 检验文件
if not exist %full_path% goto nofile
:filedrem <3> 输入词条
:retry2
set /p entry=^<词条^>
if not defined entry (goto retry2q)
rem 替换\t
set entry=%entry:\t= %
echo %entry%>>%full_path%
goto end0
:retry2q
set /p retry2_yon=再试一次?(y/n)
if not defined retry2_yon (set retry2_yon=y)
if /i %retry2_yon% EQU y (goto retry2) else (echo 放弃添加 & goto end)rem <2.1> 文件不存在时新建
:nofile
if %full_path%==A:\ goto ini
echo 目录下%dp%未找到文件%nx%
set /p new_yon=是否新建文档?(y/n)
if not defined new_yon set new_yon=y
if /i not %new_yon% EQU y (echo 放弃新建 & goto end)
rem 新建文档操作
type nul>%full_path%
if exist %full_path% (echo 新建成功 &goto filed) else (echo 错误路径 & goto ini)rem 打开ini文件
:ini
:set /p=请配置path.ini并保存<nul
start %pathfile:"=%
exitrem 非正常退出
:end
echo.&pause
exitrem 完成并退出
:end0
echo. & echo "%entry%"--^>%nx% & echo.
set res=F
if %choice%==ck set res=T
if %choice%==2 set res=T
if %choice%==wb set res=T
if %choice%==3 set res=T
if %res%==T (
:deploy
start /b %deployer:"=% /deployer&&echo 部署完毕||echo 部署运行失败
)
echo.&pause
exitrem <1.1> 参数扩充
:deal
set n=%~n1
set nx=%~nx1
set dp=%~dp1
set full_path=%~1
path.ini 示例
# easyadd paths configuration
# encoding: utf-8#路径目录
#序号 名称 简写 路径
1 单词 dc "E:\JianGuoYun\单词本.txt"
2 自词库 ck "D:\rime\custom_phrase.txt"
3 五笔 wb "D:\rime\wubi86_extended.dict.yaml"0 打开路径配置 pz "A:\"
使用示例
注意:本程序涉及的所有文件都是utf-8编码方式;另外控制台想显示unicode字符可通过注册表修改代码页,详情请百度。
PS:将输入重定向能实现由文件输入。