标题: [文本处理] [已解决]批处理去掉文本中的所有空格 [打印本页]
作者: friendtasy 时间: 2009-10-18 09:14 标题: [已解决]批处理去掉文本中的所有空格
如何使用批处理去掉文本所有空格?本人的目的是先把某文本转换成十六进制ASCII码,但这ASCII码需去掉空格才能直接使用REG对注册表进行操作,论坛有转ascii码的脚本,但不会去掉其空格。
[ 本帖最后由 friendtasy 于 2009-11-26 14:58 编辑 ]
作者: Seter 时间: 2009-10-18 09:16
- for /f "delims=" %%i in (in.txt) do (
- call,set t=%%i
- call,echo %%t: =%%>>out.txt
- )
复制代码
TRY
作者: Batcher 时间: 2009-10-18 09:22
能否把你的原始文本和转换成ASCII码之后的结果贴出来看看?
你用的哪个转换ASCII的脚本,能否提供个连接?
作者: friendtasy 时间: 2009-10-18 11:27
- ::Code by lxmxn @ bbs.cn-dos.net
- :::::::::: GetASCII.Bat ::::::::::::
- ::Date 22:50 2007-1-9
-
- @echo off&mode con cols=80
- :begin
- cls
- set/p file=请输入要处理的文件(Q 键直接退出此脚本):
- if /i "%file%"=="Q" goto :eof
- if "%file%"=="" goto error
- set new=%random%
- for %%a in (%file%) do set size=%%~za
- if "%size%"=="0" goto error
- cls&fsutil file createnew %new% %size% >nul
- echo=&&echo=文件内容所对应的ASCII码的十六进制形式依次为:&echo==========================================================
- for /f "skip=1 tokens=3" %%a in ('fc /B %new% %file%') do (
- set /p=%%a <nul
- )
- echo=&echo==========================================================&echo=&echo=&echo=文件内容所对应的ASCII码的十进制形式依次为:&echo==========================================================
- setlocal EnableDelayedExpansion
- for /f "skip=1 tokens=3" %%a in ('fc /B %new% %file%') do (
- set num=%%a
- set /a num=0x!num!
- set /p=!num! <nul
- )
- del %new%
- endlocal&echo;&echo==========================================================&echo;&pause
- exit /b 0
-
- :error
- cls&echo;&echo;
- echo “输入错误” OR “文件大小为零”,请重新输入……
- del %new% >nul 2>nul
- set file=
- set new=
- pause>nul&goto :begin
复制代码
其实这段批处理的 十六进制ASCII是否可以直接以无空格形式输出并付以某变量呢?
作者: friendtasy 时间: 2009-10-18 11:31
原帖由 Seter 于 2009-10-18 09:16 发表
for /f "delims=" %%i in (in.txt) do (
call,set t=%%i
call,echo %%t: =%%>>out.txt
)TRY
很好,delims这个分隔的应可以省掉吧?%%t:=%%有什么用的?
作者: friendtasy 时间: 2009-10-18 11:46 标题: 回复 3楼 的帖子
附上本想处理的原文件及按论坛的转ASCII得出的文件,原文件中有个目录路径,原设想,先从注册表读取路径,写入或替换掉路径段,转成十六进制的ASCII并去掉空格,当然,如果能直接转换无空格十六进制ACSII码就更好了,直接再用REG命令把要写入的内容以无空格的十六进制写入注册表。
[attach]1941[/attach]
[attach]1942[/attach]
[ 本帖最后由 friendtasy 于 2009-10-18 11:52 编辑 ]
作者: HAT 时间: 2009-10-18 12:29 标题: 回复 4楼 的帖子
把<nul前面那个空格删掉
作者: friendtasy 时间: 2009-10-18 15:05
原本想把原文本分拆两部份,直接用echo加> >>重新生成所需转换的文件,结果发现echo命令因显示内容有特殊字符而出错,后来又想到使用copy 命令把分拆的文本文件跟echo 变量生成的文件按顺序合并,结果发现多出换行,没办法只好change去掉换行。然后转换十六进制,用<把文本映射到变量%d,顺利用reg写入注册表,感觉自己七拼八凑的代码太乱了,呵呵。好像echo %c%>1.txt之类形成的文本后面多加了换行符?
[ 本帖最后由 friendtasy 于 2009-10-18 15:15 编辑 ]
作者: friendtasy 时间: 2009-10-18 17:28
原来用echo写文件是有回显回车的,已经用set /p解决,能达到自己的要求了,感谢各位的帮助。。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |