我的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]
我觉得我错过了一些简单的东西,任何帮助都会非常感激!
答案 0 :(得分:0)
这应该使用标准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或%% username %%。
另外,要获得工作中的文件名,你可以使用%~n只返回任何扩展名中的文件名。