我正在尝试创建一个批处理文件,以便从相机或SD驱动器上拍摄照片(具体且不会更改。
然后,我希望将所有* .jpg移动到公司内部网络上的其他驱动器。
它的设置方式看起来像n:\jobnumberfolder\pictures.jpg
我需要将这些文件重命名为:“vpi(1).jpg”,“vpi(2).jpg”等等(在Windows中通过突出显示多个文件并单击重命名来完成同样的操作。
批处理文件将提示用户输入一个作业号(它将被移动到的文件夹)和一个描述(命名文件的内容)。
我的编程经验是有限的,在php和python中,但我确实理解了非常基础:循环,if-else,数组,......类似的东西。
我的问题是,使用批处理文件,我似乎无法找到一个好的方法来创建一个for循环来获得我想要的东西。我想我可以使用os模块在python中做到这一点,但我觉得我缺少一些简单的东西(比如一个简单的命令或者我可以用于Windows的东西)。
即使使用延迟扩展命令,我甚至无法获得要增加的变量。即使我可以,是否可以将其添加到文件名中?我试图找到答案,但一直没能。
所以我的问题是:
这样的东西就是我正在寻找的东西
i = 0 name =“whatever” 对于相机/图像中的每个jpg 将每个重命名为+ i i + = 1
任何帮助都将不胜感激。
答案 0 :(得分:0)
@echo off
setlocal enableextensions enabledelayedexpansion
rem configuration
set "sourceFolder=w:\images"
set "targetFolder=n:\jobs"
rem test if there is something to copy
if not exist "%sourceFolder%\*.jpg" (
echo NO FILES FOUND
goto endProcess
)
:askJob
rem ask job number
set /p "jobNumber=Job Number : "
rem test if no job number
if "%jobNumber%"=="" (
echo NO JOB NUMBER - End of process
goto endProcess
)
rem test for existing job number
if exist "%targetFolder%\%jobNumber%" (
echo DUPLICATE JOB
goto askJob
)
rem ask for description
set /p "description=Description : "
rem test for no description
if "%description%"=="" (
echo NO DESCRIPTION - End of process
goto endProcess
)
rem WARNING - No test for valid job number nor valid description
rem WARNING - Don't shoot your own foot, or add code to validate
rem WARNING - according to your needs
rem create target job folder
set "target=%targetFolder%\%jobnumber%"
mkdir "%target%" > nul 2>nul
rem DO THE COPY
rem Generate a file list (dir), numerate it (findstr /n) and for each line
rem in generated list, split the number from the filename (for with delims)
rem and copy source file to numbered target file
for /f "tokens=1,* delims=:" %%f in ('dir /tc /od /b "%sourceFolder%\*.jpg" ^| findstr /n "^"') do (
echo transfer: "%sourceFolder%\%%g" == "%target%\%description%(%%f).*"
copy "%sourceFolder%\%%g" "%target%\%description%(%%f).*" >nul 2>nul
)
echo FILES COPIED
:endProcess
rem Clean
endlocal
rem and exit
exit /b
答案 1 :(得分:0)
在两个地方更改n:\
,在需要时更改f:\cam-folder\
。这是未经测试的:
@echo off
:loop
cls
echo Enter "jobnumberfolder,description" with comma and no quotes:
echo similar to 986,vpi
set "var="
set /p "var="
for /f "tokens=1,* delims=," %%a in ("%var%") do set "job=%%a"&set "desc=%%b"
echo "%job%" "%desc%" - correct? press enter to continue or N to start again:
set "var="
set /p "var="
if defined var goto :loop
md "n:\%job%\" 2>nul
setlocal enabledelayedexapansion
echo.
set c=0
for %%a in ("f:\cam-folder\*.jpg") do (
set /a c+=1
echo copying "n:\%job%\%desc%(!c!)%%~xa"
copy "%%a" "n:\%job%\%desc%(!c!)%%~xa" >nul
)
echo done
pause