我需要可靠的方式为Windows和XP创建%选项卡%(包含一个制表符)。如何在CMD中创建%选项卡%
SET TAB=" "
应该为Windows 7(未测试),但不为Win XP的工作(测试)。
这
for /F "skip=4 delims=pR tokens=1,2" %%a in ('reg query hkcu\environment /v temp') do set TAB=%%b
作品只赢XP。
我需要可靠的方式为Windows和XP创建%选项卡%(包含一个制表符)。如何在CMD中创建%选项卡%
SET TAB=" "
应该为Windows 7(未测试),但不为Win XP的工作(测试)。
这
for /F "skip=4 delims=pR tokens=1,2" %%a in ('reg query hkcu\environment /v temp') do set TAB=%%b
作品只赢XP。
您应该使用支持制表符的编辑器,而不必将其更改为空格。
你应该重新排列报价,与set TAB=" "
一样,你得到一个三个字符的变量。
选项卡包含随后也引号。
set "TAB= "
目前似乎没有可靠的方法来使用程序在所有语言平台上的所有Windows版本中创建TAB字符。
但您也可以使用嵌入式jscript代码片段。
@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));
将制表符合并到批处理文件中。特别是将它放在第一行,在@ECHO OFF
的前面,然后用SET /P
命令读取第一行。当然,它会读取整行,因此需要再添加一条SET
命令来从行中剪切制表符。这里有一个例子:
@ECHO OFF
<%0 SET /p tab=
SET tab=%tab:~0,1%
ECHO Every%tab%word%tab%is%tab%tabulated
注意的是,这里前@ECHO OFF
的空间应该是一个制表符,就像我刚才说。
这是个好主意,但更简单的应该是创建一个带有一个选项卡的新文件,并阅读此文件。谢谢。 – user1141649
@ user1141649:我也考虑到了这一点,但是你说你想要*生成*制表符,所以我认为将它保留在批处理脚本中会更接近你想要的。对于外部文件,您必须记住将它与批处理文件放在一起(我的意思是,如果您需要在某处部署脚本)。无论如何,你是对的,这也适用于外部文件。 –
@ user1141649:糟糕,但请注意:如果文件包含*单个*制表符,则该行不起作用。您仍然需要添加更多字符,否则制表符将被截断。 –
感谢您的回答。
最后我用这种简单的方法:
FOR /f "delims=" %%x IN (delimiter.ini) DO set TAB=%%x
下:makeTab
子例程创建在传递给它的变量的名称制表符,并将其存储。需要certutil
,这是不是在的Windows XP的某些版本安装。 PS:想想吧,上面的子程序可以很容易的扩展到生成你想要的任何字符(除了NUL)之外。注意代码页问题,使用ASCII 128和ASCII 255之间的字符。
可以使用(或滥用?)不明确的forfiles
命令来生成制表符(或除NUL以外的任何其他字符)在这DosTips topic讨论。
这是概括地说:
@echo off & setLocal enableExtensions disableDelayedExpansion
for /f "delims= " %%T in ('
forFiles /p "." /m "%~nx0" /c "cmd /c echo(0x09"
') do set "tab=%%T"
echo(words%tab%separated%tab%by%tab%tabs
endLocal & goto :EOF
然而,forfiles
仅在的Windows Vista及更高版本。但是振作起来,我的小小XP兔子!您可以下载forfiles.zip(22.1kb)感谢的化石副本奇妙Wayback Machine。
随着ROBOCOPY TAB也可以生成。 Robocopy在默认情况下在Windows XP中不可用。
for /f "delims= " %%T in ('robocopy /L . . /njh /njs') do set "TAB=%%T"
DosTips用户aGerman第一reported the presence of a tab character从shutdown /?
2011年的产量,并jeb精致the technique for extracting it去年五月,像这样:
@echo off & setLocal enableExtensions disableDelayedExpansion
for /f "delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" %%T in ('
shutDown /?
') do set "tab=%%T"
set "tab=%tab:~0,1%"
echo(words%tab%separated%tab%by%tab%tabs
endLocal & goto :EOF
警告:不保证跨所有版本的Windows工作或所有语言环境。我成功地测试了上方Windows 7的HP 32位的我的英文版本,但情况因人而异。
我已经保存最好的了! ;)
不情愿,因为我顶撞权威如jeb,他answer是5岁以上,并且技术已经被开发创建使用唯一的本地batch命令的制表符,其上的所有版本的Windows从XP起。
下面的:makeTab
子例程是基于在DosTips的马拉松Create All ASCII Characters主题中开发的代码。它采用makecab
创建一个制表符(ASCII 9),并将其存储与传递给它作为参数名称的变量:
@echo off & setLocal enableExtensions disableDelayedExpansion
call :makeTab tab
echo(words%tab%separated%tab%by%tab%tabs
endLocal & goto :EOF
:makeTab result=
:: returns tab char in var name given as param
:: based on http://consolesoft.com/batch/binary/genchr.cmd
setLocal
set "tabFile=%tmp%\tab.tmp"
if not exist "%tabFile%" (goto makeTabFile) else goto readTabFile
:makeTabFile
type nul >"%tabFile%"
makeCab /d compress=off /d reservePerDataBlockSize=0^
/d reservePerFolderSize=9 "%tabFile%" "%tabFile%" >nul
for /f "skip=28 delims=" %%F in ('find /v "" "%tabFile%"') do (
>"%tabFile%" echo(%%F
goto readTabFile
) %= for /f =%
:readTabFile
for /f "useBack delims= " %%T in ("%tabFile%") do (
endLocal & set "%1=%%T"
) %= for /f =%
exit /b 0 %= makeTab =%
子程序可以很容易地修改,以创建自己喜欢的任何字符(除NUL),只要你知道你想要的字符的ASCII码。 ASCII 128和255
REG查询HKCU \环境/ V温度之间的代码页问题当心让你的Temp目录的位置。这与你需要做什么有关? 'tab'变量应该包含什么? –
我需要生成供循环使用的制表符。该命令在Win XP上创建了一个制表符。 – user1141649