0

我一直在我的 Mac 上使用 CSVKIT,但我正在将我的工作流程转移到 PC 平台,以便其他人能够访问我的工作流程。我一直在使用的项目之一是 in2csv 用于转换固定宽度文件格式。在 Mac 上,我将其设置为批处理:

for x in $(ls desktop/fixedwidth/*.txt); do x1=${x%%.*}; in2csv -f fixed -s desktop/ff/schema.csv $x > $x1.csv; echo "$x1.csv done."; done

我尝试将其转换为可以从批处理文件运行的 PC 命令行选项,但我没有任何运气

for /r %%i in (*.csv) do c:\programdata\python\python36\scripts\in2csv -f fixed -s c:\users\username\desktop\in2cs_schema\test_schema.csv c:\users\username\desktop\test_files\*.txt > c:\users\username\desktop\test_files\*.csv %%i

如果我自己运行命令,它可以正常工作:

c:\programdata\python\python36\scripts\in2csv -f fixed -s [SCHEMA PATH] [FIXEDWIDTH PATH] > [OUTPUT PATH]

我觉得我错过了一些简单的东西,任何帮助将不胜感激!

4

1 回答 1

1

这应该使用标准的 FOR 语句

FOR %i in (c:\users\%username%\desktop\test\*.txt) DO (in2csv -f fixed -s c:\users\%username%\desktop\schema\schema.csv c:\users\%username%\desktop\test\%~ni.txt > c:\users\%username%\desktop\test\%~ni.csv)

如果您需要为此命令运行批处理,则需要将 %%VARIABLE%% 添加到所有变量项;前任。%%i 或 %%用户名%%。

此外,要仅获取工作中的文件名,您可以使用 %~n 将仅返回任何扩展名中的文件名。

于 2017-11-03T20:47:30.393 回答