使用BAT文件时如何向CMD输入命令?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用BAT文件时如何向CMD输入命令?相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个.bat文件,它将目录中的每个.txt文件转换为使用.csvlogparser文件。

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

我遇到的问题是,我是echoing整个命令,但它没有执行。

我需要执行这个命令:

logparser "SELECT * INTO filename FROM filename" -I:txt -o:csv
答案

以下是我的各种评论作为答案。

如果你指定%%x,必须有一个理由。 即For metavariable in something do a command with the metavariable。 所以你的metavariable应该被替换成docommand

它基本上做,'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输入命令?的主要内容,如果未能解决你的问题,请参考以下文章

求教:运行bat文件后如何让cmd窗口自动关闭?

如何编写bat文件

如何执行gradlew.bat文件

powershell中如何执行bat文件

bat 打开cmd 执行Python文件

如何使用Java执行cmd命令