首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CMD中创建%tab%

如何在CMD中创建%tab%
EN

Stack Overflow用户
提问于 2012-06-04 16:05:08
回答 11查看 35.7K关注 0票数 6

我需要可靠的方法来创建%tab% (包含一个制表符),Windows和XP。

代码语言:javascript
复制
SET TAB=" "

应适用于Windows 7(未经测试),但不适用于Win XP (经测试)。

代码语言:javascript
复制
for /F "skip=4 delims=pR tokens=1,2" %%a in ( 'reg query hkcu\environment /v temp' ) do set TAB=%%b

仅适用于Win XP。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2012-06-04 18:13:35

您应该使用支持TAB字符而不将其更改为空格的编辑器。

您应该对引号进行重新排序,就像使用set TAB=" "一样,您得到了一个包含三个字符的变量。

选项卡中还包含引号。

代码语言:javascript
复制
set "TAB=   "

目前,在所有语言平台上的所有Windows版本中,似乎没有可靠的方法来使用程序创建TAB字符。

但是您也可以使用嵌入的Jscript代码片段。

代码语言:javascript
复制
@if (@X)==(@Y) @goto :Dummy @end/* Batch part

@echo off
SETLOCAL ENABLEEXTENSIONS
for /f "delims=" %%x in ('cscript //E:JScript //nologo "%~f0"') do set TAB=%%x
echo Tab character is "%tab%"
goto :EOF

***** Now JScript begins *****/
WScript.Echo(String.fromCharCode(9));
票数 10
EN

Stack Overflow用户

发布于 2018-01-06 23:44:26

使用robocopy,也可以生成TAB。默认情况下,Robocopy在windows xp中不可用。

代码语言:javascript
复制
for /f "delims= " %%T in ('robocopy /L . . /njh /njs') do set "TAB=%%T"
票数 4
EN

Stack Overflow用户

发布于 2018-04-22 02:54:07

这种方法在Win2k、WinXP、Vista、Win7、Win8、Win10上都是一样的

它利用了这样一个事实,即由微软编译器工具集生成的PE可执行映像的MZ头文件从近25年前的NT3.1时代到今天的Windows10时代保持不变。

MZ头的偏移量0x46处的字节值是0x09,这是 TAB 字符,因此从windows中选取任何可执行文件并从中抓取TAB就足够了。

而最方便和合理的选择是使用命令处理器本身的可执行文件。

代码语言:javascript
复制
@echo off
setlocal EnableExtensions

set "TAB="
for /F "delims=" %%Z in (
    '^(type "%COMSPEC%"^|^(^(for /L %%P in ^(1^,1^,70^) do @pause^>nul^)^&set /p "TAB="^&call echo^,%%TAB%%^)^)2^>nul'
) do set "TAB=%%Z"
set "TAB=%TAB:~0,1%"

echo,
echo TAB---^>[%TAB%]^<---TAB  SPACE---^>[ ]^<---SPACE  EMPTY---^>[]^<---EMPTY
echo,
pause

2018年4月23日更新

这是另一种更容易理解的语法,它避免了使用管道,并且比上面的语法快得多

代码语言:javascript
复制
((for /L %%P in (1,1,70) do pause>nul)&set /p "TAB=")<"%COMSPEC%"
set "TAB=%TAB:~0,1%"

/UPDATE

要回显TAB,请使用以下表单:

代码语言:javascript
复制
echo,%TAB%

要将TAB字符写入文件,请执行以下操作:

代码语言:javascript
复制
:: Creates a new file with TAB character
echo,%TAB%>"NewFile.txt"

:: Appends the TAB character to end of the existing file
echo,%TAB%>>"ExistingFile.txt"

请注意,echo将始终在末尾附加一个新行(CRLF)。如果你只是想要没有换行符的制表符,使用提示技术,但请记住,这种方法与echo相比,非常慢,所以不要过度使用它

代码语言:javascript
复制
setlocal
set "prompt=%TAB%"
"%COMSPEC%" /d /k<nul>"TAB_Without_NewLine.txt"
endlocal
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10878138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档