我试图简化我经常使用的流程。基本上,我的工作流程是从DVD刻录机中取出光盘(带有录制的素材)并将其放入计算机并使用Imgburn的构建模式来创建光盘的ISO。在我录制的同一系列中通常有多张光盘,所以我将其命名为Smith 1.iso,Smith 2.iso等。
我对这类内容很陌生,但我已经制作了一些简单的批处理文件来简化文件复制等。
我有一个简单的字符串,用于在构建模式下打开Imgburn并输入源路径和目标路径:
start C:\"Program Files (x86)"\ImgBurn\imgburn.exe /mode build /src D:\VIDEO_TS /dest C:\Video\Smith 1.iso
我找到了创建增量名称的批处理文件的示例,但我不太了解他们如何工作以了解要根据我的需求进行更改以适应。
我希望批处理文件检查Smith 1.iso是否存在,并在/ dest字段中输入增量名称,例如Smith 2.iso,Smith 3.iso等。我需要的系列中最多的光盘可能大约是8个。
我理想的结果是我插入光盘,有一个autorun.inf或者打开一个文本框来提示我输入初始文件名。我进入史密斯,它会从那里创建名称。也许它可以将该名称保留为当天的标签,并在第二天再次提示我换一个新名称。
非常感谢任何帮助!
- 詹姆斯
更新:这就是我现在所处的位置:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%-%MM%-%DD%"
@echo off
setlocal enableDelayedExpansion
rem my testing command pushd "D:\bat\StackOverflow\files"
pushd "C:\Video\video depo %datestamp%"
if "%~1"=="" (
for /F ... %%u ... do set "baseName=%%~u"
set /p "baseName=Enter Name, (Enter for default %baseName%): "
) else (
set "baseName=%~1"
)
rem add a trailing space to basename end (optional)
set "baseName=%baseName% "
rem my testing command set "Extn=txt"
set "Extn=iso"
set /A "n=0"
for /f "delims=" %%F in ('
2^>nul dir /b /a-d "%baseName%*.%Extn%"^
^|findstr /xri /c:"%baseName%[0-9]*.*"
') do (
set "name=%%~nF"
set "name=!name:*%baseName%=!"
if !name! gtr !n! set "n=!name!"
)
set /a n+=1
set "newName=%baseName%%n%.%Extn%"
echo %newName%
rem my testing command type nul>"%newName%"
start C:\"Program Files (x86)"\ImgBurn\imgburn.exe /mode build /src D:\VIDEO_TS /dest C:\Video\video depo %datestamp%\%newName%
PING 1.1.1.1 -n 1 -w 2500 >NUL
start C:\imgburn.ahk
popd
endlocal
echo %baseName%>lastbaseName.txt
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "lastvideoname="
:loop
SET "videoname=%lastvideoname%"
SET /p "videoname=Enter Name [%videoname%] "
IF NOT DEFINED videoname GOTO :EOF
IF /i "%videoname%"=="quit" GOTO :EOF
IF /i "%videoname%" neq "%lastvideoname%" set /a volume=0
SET /a volume+=1
SET "lastvideoname=%videoname%"
ECHO now burning %videoname% volume %volume%
ECHO start C:\"Program Files (x86)"\ImgBurn\imgburn.exe /mode build /src D:\VIDEO_TS /dest "C:\Video\%videoname% %volume%.iso"
GOTO loop
相当简单。如果使用 Enter ,请求新名称,默认为相同名称。如果新名称匹配,则增加卷号,如果不重新启动volumne编号。
输入quit
以剥土豆。
请注意,start
只是echo
用于测试目的。删除echo
关键字以实际允许imgburn
进程继续。
补充资料的修订版
@ECHO OFF
SETLOCAL
SET /p "videoname=Enter Name "
IF NOT DEFINED videoname GOTO :EOF
set /a volume=0
:loop
SET /a volume+=1
IF EXIST "C:\Video\%videoname% %volume%.iso" GOTO loop
start C:\"Program Files (x86)"\ImgBurn\imgburn.exe /mode build /src D:\VIDEO_TS /dest "C:\Video\%videoname% %volume%.iso"
GOTO :EOF
只需构建目标名称(如果已存在),然后递增卷号,直到找到唯一名称。
请注意,这些程序依赖于输入的完整性;也就是说,所做的条目不包括任何不能用作文件名的:|/\*?
等字符。
答案 1 :(得分:0)
这是一个正确的文件重命名脚本(使用rem
注释):
@echo off
setlocal enableDelayedExpansion
rem my testing command pushd "D:\bat\StackOverflow\files"
pushd "C:\Video"
if exist lastbaseName.txt (
rem read last name saved
for /F "tokens=*" %%G in (lastbaseName.txt) do set "baseName=%%~G"
) else (
set "baseName=%username%"
)
if "%~1"=="" (
set /p "baseName=Enter Name, Enter for default !baseName!: "
) else (
set "baseName=%~1"
)
rem remember last name (or full history with >> redirector instead of > )
echo %baseName%>lastbaseName.txt
rem add a trailing space to basename end (optional)
set "baseName=%baseName% "
rem my testing command set "Extn=txt"
set "Extn=iso"
set /A "n=0"
for /f "delims=" %%F in ('
2^>nul dir /b /a-d "%baseName%*.%Extn%"^
^|findstr /xri /c:"%baseName%[0-9]*.*"
') do (
set "name=%%~nF"
set "name=!name:*%baseName%=!"
if !name! gtr !n! set "n=!name!"
)
set /a n+=1
set "newName=%baseName%%n%.%Extn%"
echo %newName%
rem my testing command type nul>"%newName%"
echo start C:\"Program Files (x86)"\ImgBurn\imgburn.exe /mode build /src D:\VIDEO_TS /dest "C:\Video\%newName%"
popd
endlocal
输出:
d:\bat>D:\bat\StackOverflow\28509860.bat
Smith 1.txt
d:\bat>D:\bat\StackOverflow\28509860.bat
Smith 2.txt
d:\bat>D:\bat\StackOverflow\28509860.bat
Smith 3.txt
d:\bat>D:\bat\StackOverflow\28509860.bat Jones
Jones 1.txt
d:\bat>D:\bat\StackOverflow\28509860.bat Jones
Jones 2.txt
d:\bat>D:\bat\StackOverflow\28509860.bat
Smith 4.txt
d:\bat>