我正在尝试创建一个.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
答案 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
注意:
包含空格或特殊字符的文件名在引用方面需要特别注意。