Board logo

标题: [文本处理] [已解决]批处理去掉文本中的所有空格 [打印本页]

作者: friendtasy    时间: 2009-10-18 09:14     标题: [已解决]批处理去掉文本中的所有空格

如何使用批处理去掉文本所有空格?本人的目的是先把某文本转换成十六进制ASCII码,但这ASCII码需去掉空格才能直接使用REG对注册表进行操作,论坛有转ascii码的脚本,但不会去掉其空格。

[ 本帖最后由 friendtasy 于 2009-11-26 14:58 编辑 ]
作者: Seter    时间: 2009-10-18 09:16

  1. for /f "delims=" %%i in (in.txt) do (
  2. call,set t=%%i
  3. call,echo %%t: =%%>>out.txt
  4. )
复制代码
TRY
作者: Batcher    时间: 2009-10-18 09:22

能否把你的原始文本和转换成ASCII码之后的结果贴出来看看?
你用的哪个转换ASCII的脚本,能否提供个连接?
作者: friendtasy    时间: 2009-10-18 11:27

  1. ::Code by lxmxn @ bbs.cn-dos.net
  2. :::::::::: GetASCII.Bat ::::::::::::
  3. ::Date 22:50 2007-1-9
  4. @echo off&mode con cols=80
  5. :begin
  6. cls
  7. set/p file=请输入要处理的文件(Q 键直接退出此脚本):
  8.         if /i "%file%"=="Q" goto :eof
  9.         if "%file%"=="" goto error
  10. set new=%random%
  11. for %%a in (%file%) do set size=%%~za
  12.         if "%size%"=="0" goto error
  13. cls&fsutil file createnew %new% %size% >nul
  14. echo=&&echo=文件内容所对应的ASCII码的十六进制形式依次为:&echo==========================================================
  15. for /f "skip=1 tokens=3" %%a in ('fc /B %new% %file%') do (
  16.         set /p=%%a <nul
  17. )
  18. echo=&echo==========================================================&echo=&echo=&echo=文件内容所对应的ASCII码的十进制形式依次为:&echo==========================================================
  19. setlocal EnableDelayedExpansion
  20. for /f "skip=1 tokens=3" %%a in ('fc /B %new% %file%') do (
  21.         set num=%%a
  22.         set /a num=0x!num!
  23.         set /p=!num! <nul
  24. )
  25. del %new%
  26. endlocal&echo;&echo==========================================================&echo;&pause
  27. exit /b 0
  28. :error
  29.         cls&echo;&echo;
  30.         echo         “输入错误” OR “文件大小为零”,请重新输入……
  31.         del %new% >nul 2>nul
  32.         set file=
  33.         set new=
  34.         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