Board logo

标题: [文本处理] [已解决]处理一批文件的BAT脚本为何只处理最后一个? [打印本页]

作者: mrhxn    时间: 2012-10-11 14:15     标题: [已解决]处理一批文件的BAT脚本为何只处理最后一个?

我想用下面的代码处理一批文件,但就处理了最合一个,其它的不处理,不知怎么办,请帮帮我?
  1. @echo on
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir/a-d/b *.flv') do (
  4. set "var=%%i"
  5. set v=LoadPlugin("D:\greensoft\MeGUI\tools\ffms\ffms2.dll")
  6.   echo !v!)>!var!.avs
  7.   echo FFVideoSource("j:\!var!"  threads=1) >>!var!.avs
  8.   echo #deinterlace >>!var!.avs
  9.   echo crop(0  58  0  -26) >>!var!.avs
  10.   echo LanczosResize(720 416) # Lanczos (Sharp) >>!var!.avs
  11.   echo #denoise >>!var!.avs
  12. )
  13. pause
复制代码

作者: wc726842270    时间: 2012-10-11 14:54

本帖最后由 wc726842270 于 2012-10-11 15:24 编辑

还是不想为什么了吧,有点困了
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir/a-d/b *.VBS') do call :edit %%i
  4. echo.
  5. set/p=处理完毕,请检验<NUL
  6. pause>nul&goto eof
  7. :edit
  8. set "var=%1"
  9. set v=LoadPlugin("D:\greensoft\MeGUI\tools\ffms\ffms2.dll")
  10.   echo !v!)>!var!.avs
  11.   echo FFVideoSource("j:\!var!"  threads=1) >>!var!.avs
  12.   echo #deinterlace >>!var!.avs
  13.   echo crop(0  58  0  -26) >>!var!.avs
  14.   echo LanczosResize(720 416) # Lanczos (Sharp) >>!var!.avs
  15.   echo #denoise >>!var!.avs
复制代码
看一下写的是否与你要的有出入
作者: mrhxn    时间: 2012-10-11 17:27

谢谢,结果正是我想要的。
作者: mrhxn    时间: 2012-10-12 09:07

不好意思。没仔细看,不能出我要的结果。生成的文件名不对。
作者: apang    时间: 2012-10-12 10:29

  1. @echo off
  2. for /f "delims=" %%i in ('dir/a-d/b *.vbs') do (
  3.   (echo LoadPlugin^("D:\greensoft\MeGUI\tools\ffms\ffms2.dll"^)
  4.   echo FFVideoSource^("j:\%%i"  threads=1^)
  5.   echo #deinterlace
  6.   echo crop^(0  58  0  -26^)
  7.   echo LanczosResize^(720 416^) # Lanczos ^(Sharp^)
  8.   echo #denoise)>%%i.avs
  9. )
复制代码
将第二行中的vbs改成你需要的
作者: mrhxn    时间: 2012-10-12 10:42

本帖最后由 mrhxn 于 2012-10-12 10:49 编辑

谢谢,简洁,完全可以了。不过第一个改了一下也可以的:就是路径还是不能处理,
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir/a-d/b *.flv') do call :edit "%%i"
  4. echo.
  5. set/p=处理完毕,请检验<NUL&exit
  6. pause>nul&goto eof
  7. :edit
  8. set var=%1
  9. set v=LoadPlugin("D:\MeGUI\tools\ffms\ffms2.dll")
  10.   echo !v!>!var!.avs
  11.   echo FFVideoSource(!var!, threads=1) >>!var!.avs
  12.   echo #deinterlace >>!var!.avs
  13.   echo crop(0,58,0,-26) >>!var!.avs
  14.   echo LanczosResize(720,416) # Lanczos (Sharp) >>!var!.avs
  15.   echo #denoise >>!var!.avs
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2