在unicode中命名的文件上运行批处理

时间:2013-08-27 20:42:03

标签: batch-file

我需要在unicode中命名的文件上运行一个进程吗? 如何使用批处理文件?

我试过了:

 dir /b %folder% > dir.lst

 ::cmd /u /c dir /b %folder% > dir.lst
 FOR /F "delims= tokens=*" %%G IN (dir.lst) DO ( 
 echo %%G
 @set filename2=%%G
 @echo %filename2%


 @set filename=%pathlogs%\!filename2!
 @echo %filename%
 @echo %filename2%
 @%binaries%\gawk -v fn=%filename% -v fn2=%filename2% -f %scripts%\AlexBank_barcode.awk                               %folder%\%filename2% 2> %scripts%\AlexBank_barcode.fil
 @%binaries%\sort -k 1.129,1.144 -T F:\tmp  %pathlogs%\%filename2%.log >      %pathlogs%\%filename2%.log.tmp 2> %scripts%\%filename2%".sort.fil"
 @set filename3=%filename%.log.tmp1
 @%binaries%\gawk -f %scripts%\AlexBank_collect_barcode.awk %pathlogs%\%filename2%.log.tmp 2> %scripts%\AlexBank_collect_barcode.fil
 @set filename3=%filename%.separate_all.log
 @%binaries%\gawk -f %scripts%\AlexBank_separate_barcode.awk %pathlogs%\%filename2%.log.tmp1 2> %scripts%\AlexBank_separate_barcode.fil

 @set filename3=%filename%.separate_statement_le.awk.log

@%binaries%\ gawk -v fn =%filename3%-f%scripts%\ AlexBank_separate_statement_le.awk%pathlogs%\%filename2%.log.tmp1 2> %脚本%\%文件名2% “AlexBank_separate_statement_le.awk.fil”      @set filename3 =%filename%.separate_statement_gt.awk.log      @%binaries%\ gawk -v fn =%filename3%-f%scripts%\ AlexBank_separate_statement_gt.awk%pathlogs%\%filename2%.log.tmp1 2> %脚本%\%文件名2% “AlexBank_separate_statement_gt.awk.fil”      )

1 个答案:

答案 0 :(得分:0)

这里有两个选项:

  1. 为控制台窗口设置TrueType字体
  2. 请勿使用for /f来迭代dir /b的输出。在绝大多数情况下,这是不必要的,当你遇到的设置稍有不对时,更难以正确,更脆弱并且在Unicode文件名上失败。您可以使用for直接迭代文件:

    for %%F in (%folder%\*) do ...