标题: [文本处理] tab制表符获取的通用批处理函数 [打印本页]
作者: batman 时间: 2011-4-23 22:10 标题: tab制表符获取的通用批处理函数
前言:
大家都知道论坛程序是处理不了tab制表符的,一旦我们贴上带有tab的代码时,论坛程序就会自动将所有的tab替换为tab长度的空格,从而导致再次复制代码运行时出错。所以很多人都渐渐养成了在代码中前面部分设置一个tab变量,并在代码中将所有的tab书写成%tab%式样,同时还要加上诸如此类的注解:请将下面tab的值替换为实际的tab,这样真的是很麻烦。
为了解决这一问题,plp626兄弟搞出一个tab获取函数,在批处理代码中自动设置tab变量为制表符,这一想法确实很好。但马上就有会员指出这个函数中所涉及的环境并不是所有系统中都具备的,所以有其不通用性。于是本人就想到了在系统的帮助说明中去获取制表符,结果系统的帮助说明中根本就不存在制表符。接着本人在用debug成功获取退格符后尝试用debug获取tab,谁知道获取的仍然是tab长度的空格。因而我不得再想其他的办法。
突然我想到系统中有自带的bat文件,这些bat文件中应该存在着制表符,于是,经过查找、编写、调试,功夫不负有心人-tab获取通用函数终于完成。
示例代码:- @echo off
- ::下面的tab是制表符的变量名,可自行修改
- call :get_tab tab
- for /l %%a in (1,1,100) do echo %%a%tab%bathome
- pause>nul&goto :eof
-
- %------------------制表符获取函数------------------%
- :get_tab
- for /f "skip=39 delims=T" %%a in (%windir%\system32\MsDtc\Trace\msdtcvtr.bat) do if not defined tab set "%1=%%a
- call,set "%1=%%%1:~,-1%%"
- %------------------制表符获取函数------------------%
复制代码
注:msdtcvtr.bat是系统自带的脚本,只要是装有windows操作平台的电脑中都有这个文件
作者: asnahu 时间: 2011-4-23 22:58
好无奈的函数……
作者: CrLf 时间: 2011-4-24 12:31
妙,我咋没想到findstr /s /m /c:"[tab]" c:\*.bat
作者: ▄︻┻═┳一 时间: 2011-4-24 15:38
很不错啊,挺方便。
作者: plp626 时间: 2011-5-17 22:44
- @echo off
- :: 代码页切换获取制表符
- chcp 936
- set tab=〇
- chcp 437
- set tab>$.txt
- echo %tab%#
- start $.txt
- pause
复制代码
http://www.bathome.net/thread-12314-2-1.html 16楼后面的收获。。
作者: Batcher 时间: 2023-8-2 21:45
GetTAB-1.bat 从命令帮助信息里面获取制表符,不依赖特定语言代码页
Win7 / Win10 / Win11 测试通过- @echo off
- for /f "tokens=2 delims=0123456789" %%i in ('shutdown /? ^| findstr /b "E"') do (
- set "KeyTAB=%%i"
- )
- echo Hello%KeyTAB%World
- pause
复制代码
GetTAB-2.bat 利用 cmd /u 命令的 Unicode 输出,支持默认的936代码页
Win7 / Win10 / Win11 测试通过- @echo off
- for /f "delims=U" %%i in ('cmd /u /c echo 唉') do (
- set "KeyTAB=%%i"
- )
- echo Hello%KeyTAB%World>1.txt
- pause
复制代码
GetTAB-3.bat 切换代码页获取制表符,支持默认的936代码页
Win7 / Win10 / Win11 测试通过- @echo off
- chcp 936 >nul
- set "KeyTAB=〇"
- chcp 437 >nul
- echo Hello%KeyTAB%World
- pause
复制代码
GetTAB-4.bat 从系统自带的文件里面获取制表符,不依赖特定语言代码页
Win7 / Win10 / Win11 测试通过- @echo off
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close) & exit /b
- cd /d "%~dp0"
- for /f "skip=39 delims=%%" %%i in (%windir%\system32\MsDtc\Trace\msdtcvtr.bat) do (
- if not defined KeyTAB (
- set "KeyTAB=%%i"
- )
- )
- echo Hello%KeyTAB%World
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |