[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] tab制表符获取的通用批处理函数

前言:
    大家都知道论坛程序是处理不了tab制表符的,一旦我们贴上带有tab的代码时,论坛程序就会自动将所有的tab替换为tab长度的空格,从而导致再次复制代码运行时出错。所以很多人都渐渐养成了在代码中前面部分设置一个tab变量,并在代码中将所有的tab书写成%tab%式样,同时还要加上诸如此类的注解:请将下面tab的值替换为实际的tab,这样真的是很麻烦。

   为了解决这一问题,plp626兄弟搞出一个tab获取函数,在批处理代码中自动设置tab变量为制表符,这一想法确实很好。但马上就有会员指出这个函数中所涉及的环境并不是所有系统中都具备的,所以有其不通用性。于是本人就想到了在系统的帮助说明中去获取制表符,结果系统的帮助说明中根本就不存在制表符。接着本人在用debug成功获取退格符后尝试用debug获取tab,谁知道获取的仍然是tab长度的空格。因而我不得再想其他的办法。

   突然我想到系统中有自带的bat文件,这些bat文件中应该存在着制表符,于是,经过查找、编写、调试,功夫不负有心人-tab获取通用函数终于完成。

示例代码:
  1. @echo off
  2. ::下面的tab是制表符的变量名,可自行修改
  3. call :get_tab tab
  4. for /l %%a in (1,1,100) do echo %%a%tab%bathome
  5. pause>nul&goto :eof
  6. %------------------制表符获取函数------------------%
  7. :get_tab
  8. for /f "skip=39 delims=T" %%a in (%windir%\system32\MsDtc\Trace\msdtcvtr.bat) do if not defined tab set "%1=%%a
  9. call,set "%1=%%%1:~,-1%%"
  10. %------------------制表符获取函数------------------%
复制代码
注:msdtcvtr.bat是系统自带的脚本,只要是装有windows操作平台的电脑中都有这个文件
***共同提高***

好无奈的函数……

TOP

妙,我咋没想到findstr /s /m /c:"[tab]" c:\*.bat

TOP

很不错啊,挺方便。

TOP

  1. @echo off
  2. :: 代码页切换获取制表符
  3. chcp 936
  4. set tab=〇
  5. chcp 437
  6. set tab>$.txt
  7. echo %tab%#
  8. start $.txt
  9. pause
复制代码
http://www.bathome.net/thread-12314-2-1.html 16楼后面的收获。。

TOP

GetTAB-1.bat 从命令帮助信息里面获取制表符,不依赖特定语言代码页
Win7 / Win10 / Win11 测试通过
  1. @echo off
  2. for /f "tokens=2 delims=0123456789" %%i in ('shutdown /? ^| findstr /b "E"') do (
  3.     set "KeyTAB=%%i"
  4. )
  5. echo Hello%KeyTAB%World
  6. pause
复制代码
GetTAB-2.bat 利用 cmd /u 命令的 Unicode 输出,支持默认的936代码页
Win7 / Win10 / Win11 测试通过
  1. @echo off
  2. for /f "delims=U" %%i in ('cmd /u /c echo 唉') do (
  3.     set "KeyTAB=%%i"
  4. )
  5. echo Hello%KeyTAB%World>1.txt
  6. pause
复制代码
GetTAB-3.bat 切换代码页获取制表符,支持默认的936代码页
Win7 / Win10 / Win11 测试通过
  1. @echo off
  2. chcp 936 >nul
  3. set "KeyTAB=〇"
  4. chcp 437 >nul
  5. echo Hello%KeyTAB%World
  6. pause
复制代码
GetTAB-4.bat 从系统自带的文件里面获取制表符,不依赖特定语言代码页
Win7 / Win10 / Win11 测试通过
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close) & exit /b
  3. cd /d "%~dp0"
  4. for /f "skip=39 delims=%%" %%i in (%windir%\system32\MsDtc\Trace\msdtcvtr.bat) do (
  5.     if not defined KeyTAB (
  6.         set "KeyTAB=%%i"
  7.     )
  8. )
  9. echo Hello%KeyTAB%World
  10. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表