使用BAT文件时如何向CMD输入命令?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用BAT文件时如何向CMD输入命令?相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个.bat
文件,它将目录中的每个.txt
文件转换为使用.csv
的logparser
文件。
logparser的常用语法是:
logparser "SELECT * INTO filename FROM filename" -I:txt -o:csv`
这是我到目前为止所拥有的:
for /R %%x in (*.txt) do (echo logparser "SELECT * INTO filename FROM filename" -I:txt -o:csv
我遇到的问题是,我是echo
ing整个命令,但它没有执行。
我需要执行这个命令:
logparser "SELECT * INTO filename FROM filename" -I:txt -o:csv
以下是我的各种评论作为答案。
如果你指定%%x
,必须有一个理由。
即For
metavariable
in
something
do
a command with the metavariable
。
所以你的metavariable
应该被替换成do
的command
!
它基本上做,'for
每个.txt
文件将它分配给%%x
,(元变量),然后do
a command on %%x
,(。。txt文件)'。
每个filename.txt
将单独分配给%%x
。
我的猜测是do
的命令是:
logparser "SELECT * INTO filename.csv FROM filename.txt" -i:txt -o:csv
考虑到%%x
被分配给filename.txt
,并且阅读for
的帮助用法,即for /?
,向您显示%%~nx
仅被分配给filename
;你的命令应该是这样的:
logparser "SELECT * INTO %%~nx.csv FROM %%x" -i:txt -o:.csv
另外,当从for /?
读取输出时,您会注意到for /R %%x in (*.txt) do...
递归地工作,即分配给目录和所有子目录中的每个文件。
你的问题没有提到子目录,所以也许你需要将它改为for %%x in (*.txt) do...
。
所以将它们放在一起看起来更像是这样的:
for %%x in (*.txt) do logparser "SELECT * INTO %%~nx.csv FROM %%x" -i:txt -o:.csv
要使logparser
工作,它必须位于当前工作目录中,在这种情况下,它将与.txt
文件位于同一目录中,或者位于%PATH%
变量中指定的目录中。
如果这些都不是真的,那么您应该为它提供相对或完全指定的路径,例如:
for %%x in (*.txt) do "C:Program Files (x86)Log Parser 2.2LogParser.exe" "SELECT * INTO %%~nx.csv FROM %%x" -i:txt -o:.csv
注意: 包含空格或特殊字符的文件名在引用方面需要特别注意。
以上是关于使用BAT文件时如何向CMD输入命令?的主要内容,如果未能解决你的问题,请参考以下文章