【发布时间】:2018-09-23 13:55:32
【问题描述】:
我正在为包含准备转换的图像文件的文件夹编写一个用于拖放功能的批处理脚本。只是我正在寻找合并以下这两个脚本的帮助:
cls
@pushd %~dp0
:::::::::::::::::::
@echo off
set exepath="\\output\_REPO\TOOLS\IMAGE_TOOLS\ImageConvert\IMAGECONV_x64.exe"
set rename=-r
for /r %%i in (*.tga) do %exepath% "%%i"
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d *_converted.tga') do (
set "imagefilename=%%~i"
set "folder=output"
mkdir "!folder!" 2>nul
move /y "!imagefilename!" "!folder!" >nul
)
endlocal
:::::::::::::::::::
@popd
pause
图像转换后,我想将这些转换后的文件 (*_converted.tga) 移动到一个名为“output”的新文件夹,该文件夹与未转换的文件位于同一目录中。
files_for_conversion(这里是转换前的文件) | | |_output(这里我想在转换后移动文件)
上面的脚本只计算到图像文件被转换的点,然后它返回“找不到文件”。当我将它分成两部分时,它的工作方式应该如此。第二个脚本从“输出”文件夹中评估并完成工作。
cls
@pushd %~dp0
:::::::::::::::::::
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d *_converted.tga') do (
set "imagefilename=%%~i"
set "folder=output"
mkdir "!folder!" 2>nul
move /y "!imagefilename!" "!folder!" >nul
)
endlocal
:::::::::::::::::::
@popd
pause
所以最好用一步解决方案而不是两步来完成。
我正试图绕开它,但显然批处理命令不是我的事。任何帮助和建议都非常感谢。
【问题讨论】:
-
您应该将转换后的文件直接存储在您想要的位置,方法是为(未知)
\IMAGECONV_x64.exe指定一个参数,或者通过推送到源文件位置,这样您就可以相对于它的位置进行操作。 -
我还注意到,当我将单个文件拖放到 .bat 上时,它实际上可以工作。我已经替换了这一行: FOR /R %%I IN (.exr) DO %EXEPATH% "%%I" with FOR %%I IN (%*) DO %EXEPATH% "%%I"并将文件保存在适当的文件夹中 - 关于您的建议,我想看一个小例子,因为就像我写的批处理脚本超出了我的学术经验:)
标签: batch-file cmd directory move