目前我使用我创建的批处理文件遇到了一些问题。:
1)我一直试图在02-09的文件版本中实现填充,然后恢复为10,11等...例如创建的文件可以称为delivery_20-11-17_02.txt但是我需要它有填充,所以当它版本升级时它将是delivery_20-11-17_02.txt。如果它到达版本10,它将需要像delivery_20-11-17_10.txt一样。
2)创建新文件时,它会像delivery_2017-11-09_.txt一样保存。对于该文件的第一个版本,有一个不必要的下划线。一旦文件从版本2开始版本化而不是从创建的第一个文件开始版本化,我需要使用下划线。
3)在我可以选择命名文件的代码部分,还有一个我不确定如何解决的错误。例如,我创建文件,我选择更新文件名并命名为" cat"它将保存为delivery_2017-11-09_cat_02.txt。但是,我希望这个cat文件最初是delivery_2017-11-09_cat.txt。然后,如果我选择更新文件名并再次命名为cat,则会创建版本2 delivery_2017-11-09_cat_02.txt。没关系。
4)当我选择"更新版本"文件将像delivery_2017-11-09__2一样保存。在版本号之前出现双下划线。我需要那里只有一个强调他们的。我知道这与2号问题有关。
以下是完整的代码:
@echo off
:prep
cls
set filename=
set mydate=
set newname=
set version=1
For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%b-%%a)
set choice=
set filename="../delivery_%mydate%_%newname%.txt"
::set filename="../delivery_%mydate%_%version%.txt"
echo %filename%
pause
:_CHECKEXIST
cls
IF EXIST %Filename% (
GOTO _MAINMENU
) Else (
GOTO start
)
:_MAINMENU
ECHO.
ECHO Choose on of the the following options:
ECHO 1. Update filename
ECHO 2. Update version
ECHO 3. Quit
ECHO.
SET /P Choice="Enter your selection. [1,2,3]: "
IF /I "%Choice%"=="1" GOTO addname
IF /I "%Choice%"=="2" GOTO versionup
IF /I "%Choice%"=="3" (
GOTO _END
) ELSE (
CLS
GOTO _MAINMENU
)
:addname
echo Enter addition to file name
set /p newname=
set filename="../delivery_%mydate%_%newname%.txt"
echo File name is now %filename%.
::set choice3 =
::set /p choice3=(y / n)
::if '%choice3%'=='' ECHO "%choice3%" is not valid please try again
::if '%choice3%'=='y' goto versionup
::if '%choice3%'=='n' goto addname
:versionup
set /A version=version+1
echo version is %version%
::FOR /F "tokens=* delims=0" %%A IN ("%Var%") DO SET Var=%%A
set filename="../delivery_%mydate%_%newname%_%version%.txt"
if EXIST "%filename%" goto :versionup
:start
echo.
echo Choose the following:
echo 1. Directories
echo 2. Files
echo 3. quit
echo.
set /p choice=
if '%choice%'=='1' goto directory
if '%choice%'=='2' goto file
if '%choice%'=='3' goto end
cls
ECHO "%choice%" is not valid please try again
goto start
:directory
dir /ad /on /b > %filename%
echo.
goto checksuccess
:file
dir /a-d /on /b > %filename%
echo.
goto checksuccess
: checksuccess
if EXIST %filename% (
echo %filename% written successfully
) else (
echo file not written
)
:end
echo.