在Windows中使用回声,CMD,脚本定位字符串MSDOS
问题描述:
如何组织我的输出,显示像行和列一样的结果?例如:在Windows中使用回声,CMD,脚本定位字符串MSDOS
DIR output: C:\Folder\*.*
Field1 Date Time Size
MidInf 2014/11/22 15:23 7664
FewInf 2014/11/22 15:23 548
Empty 2014/11/22 15:09 0
Someinf 2014/11/22 15:23 683
Empty 2014/11/22 15:09 0
Empty 2014/11/22 15:09 0
MidInf 2014/11/22 15:23 7729
FewInf 2014/11/22 15:23 65
例如现在是目录,但我笏显示其他类型的信息......
其他例如:
C:\user\binder>netstat -nao | find /i "37"
TCP 192.168.97.100:53377 23.7.112.60:443 ESTABLISHED 3260
UDP 0.0.0.0:3702 *:* 1092
UDP 0.0.0.0:3702 *:* 1828
UDP 0.0.0.0:3702 *:* 1828
UDP 0.0.0.0:3702 *:* 1092
UDP 192.168.97.100:137 *:* 4
UDP [::]:3702 *:* 1828
UDP [::]:3702 *:* 1092
UDP [::]:3702 *:* 1092
UDP [::]:3702 *:* 1828
C:\user\binder>
是可能的?
编辑:
仅适用于Windows CMD或DOS
答
如果您使用的是带有bash的Unix/Linux操作系统,然后在列的输出信息的最简单的方法是将管道中的信息bash命令'柱'。例如,如果你有包含的东西,你要打印出列表的文本文件,你的命令是:
more foobar.txt | column
我经常用“列”和grep命令的为好。
ls | grep "foobar" | column
这将打印一个很好的专栏式的所有文件名在你的当前目录中包含“foobar”。
有关列命令在终端中输入'man column'的更多信息。
答
@ECHO OFF
SETLOCAL
CALL :FORMAT Field1 11 DATE 10 TIME 5 Size 7
FOR %%a IN (*.*) DO FOR /f "tokens=1,2" %%b IN ("%%~ta") DO CALL :FORMAT %%~nxa 11 %%b 10 %%c 5 %%~za -7
GOTO :EOF
:: Format parameter-pairs by right-pad/left-pad
:FORMAT
SET "spaces= "
SET "line="
:formloop
SET column=%2
IF NOT DEFINED column ECHO(%line:~0,-1%&GOTO :EOF
SET column=%~1
IF %2 gtr 0 (SET "column=%column%%spaces%") ELSE (SET "column=%spaces%%column%")
IF %2 gtr 0 (CALL SET "line=%%line%%%%column:~0,%2%% ") ELSE (CALL SET "line=%%line%%%%column:~%2%% ")
shift&SHIFT
GOTO formloop
下面是一个相当明显的演示。它显示了对通常嫌疑犯的敏感性;将所需要的大象的列宽设置为向左垫,将垫的右侧设置为正值。我假设每列之间有空格。编制报告主体的数据取决于所需报告的细节。请注意,""
应该生成一个列。
这是什么系统? “按行和列组织”是什么意思?目前您正在运行的输出命令是什么,在更改后您希望它们看起来像什么? – JNevill 2014-11-22 22:38:46
@JNevill它是使用bash的unix/linux,它对于它来说很重要,他意味着当你运行'ls'命令时,例如输出格式不错,基本上他怎么能这样做呢?但现在看起来更仔细一点,他正在使用窗口,现在令人困惑。 – jgr208 2014-11-22 22:40:33
我还没有关注。标签是'bash',但命令和输出是Windows命令提示符。此外,作为示例显示的输出正是Windows如何输出这些命令的结果。 OP希望这些输出看起来像什么? – JNevill 2014-11-22 22:44:36