通过批处理运行许多命令,遇到恼人的问题

时间:2014-08-27 23:24:20

标签: windows batch-file rmdir

我要做的是自动移动下载,删除不需要的文件,然后通过命令行运行程序,以及谁知道我想通过这个任务还有什么。在这里,我有了第一个.bat文件的开头:

move.bat

@echo off
for /f "tokens=*" %%f in ('dir /a:-D /s /b') do move "%%f" .
for /f "tokens=*" %%f in ('dir /a:D /s /b') do rd "%%f"
del "C:\Downloads\*.jpg"
del "C:\Downloads\*.png"
del "C:\Downloads\*.gif"
del "C:\Downloads\*.txt"
del "C:\Downloads\*.nfo"
move "C:\Downloads\*.mp4" "C:\Movies\"
cd "C:\program files\filebot\"
filebot -rename c:\movies
copy "E:\Documents\Tweaks&commands\folderize.bat" "C:\Movies"
cd "C:\Movies\"
folderize.bat
ping 192.0.2.2 -n 1 -w 4000 > nul
rmdir /S /Q "C:\movies\folderize"

现在,一切正常直到运行folderize.bat

Folderize.bat

@echo off
setlocal enabledelayedexpansion
for %%a in (*.eng*) do (
  set file=%%a
  ren "!file!" "!file:_=!"
)
@echo off
for %%a in (*.*) do (
md "%%~na" 2>nul
move "%%a" "%%~na"
)

Folderize.bat完全按照它应该做的去做,但是如果我运行它会包含它自己,创建一个名为folderize的文件夹然后移动到那里。好吧,不是问题,我只会做一个rmdir,一切都很好。

这不起作用

Move.bat我最初尝试没有ping命令行。我添加了那条线,因为我认为在尝试删除之前需要几秒钟(老实说,只是在黑暗中刺伤)。那是不行的。

我打开了cmd提示并手动运行它以查看会发生什么。初始化folderize后,它会移动到它自己的文件夹中,提示无法找到批处理文件并终止。

我是否可以通过某种方式修改folderize.bat以排除.bat个文件被放置在文件夹中或实际上只是将自己排除

1 个答案:

答案 0 :(得分:1)

好像它会移动folderize.bat批处理文件中的所有内容。也许你应该像这样过滤器:

@echo off
setlocal enabledelayedexpansion
for %%a in (*.eng*) do (
  set file=%%a
  ren "!file!" "!file:_=!"
)
@echo off
for /f "tokens=1* delims=" %%a in ('dir /b /o:-n ^| findstr /iv "folderize.bat"') do (
md "%%~na" 2>nul
move "%%a" "%%~na"
)

此外,您使用call中的move.bat命令,如下所示:

call folderize.bat
相关问题