使用BAT文件时,如何在CMD中输入命令?

时间:2018-06-20 17:59:01

标签: batch-file scripting windows-scripting

我正在尝试创建一个.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正在执行整个命令,但是它没有执行。

我需要执行以下命令:

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

1 个答案:

答案 0 :(得分:0)

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

如果您指定%%x,则一定有原因。For metavariable in something do a command with the metavariable
因此,您的metavariable应该替换为{{1} }的do

从本质上讲,每个command文件都将'for分配给.txt,依次是(元变量),然后是%%x {{1 }},(。txt文件)'。
每个do将分别分配给a command on %%x

我的猜测是filename.txt的命令是:

%%x

考虑将do分配给logparser "SELECT * INTO filename.csv FROM filename.txt" -i:txt -o:csv ,并阅读%%x的帮助用法,即filename.txt,向您显示for被分配给{仅{1}};您的命令应该看起来像这样:

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

注意:
包含空格或特殊字符的文件名在引用方面需要特别注意