2017-05-25 43 views
1

下面是script.I复制文件基于用户给出的日期。批处理文件无法正常工作,并一次又一次提示用户输入

@echo off 
echo Enter Date in mm-dd-yyyy: 
set /p dt= 
echo %dt% 

if %dt% =="" goto :EnterDate 


if not %dt% =="" goto :CopyFile 

:CopyFile 
xcopy C:\Users\hkum29\Desktop\Source\*.* C:\Users\hkum29\Desktop\Destination\*.* /d:%dt% 

:EnterDate 
echo Enter Date 

Pause 
+1

'如果“%DT %“==”“goto:EnterDate'并且不需要第二个如果 – elzooilogico

回答

0

想那脚本逻辑应该是

@echo off 
SetLocal 
:EnterDate 
set /p dt="Enter Date in mm-dd-yyyy: " 
if "%dt%" == "" goto :EnterDate 

:CopyFile 
echo %dt% 
xcopy C:\Users\hkum29\Desktop\Source\*.* C:\Users\hkum29\Desktop\Destination\*.* /d:%dt% 
EndLocal 
Pause 

你最好添加日期验证Batch Script: Validate Date Input

你也可以使用一个非常丑陋的伎俩进行验证,(因为它AB使用系统日期)

@echo off 
SetLocal 
:EnterDate 
set /p dt="Enter Date in mm-dd-yyyy: " 
if "%dt%" == "" goto :EnterDate 

set "saved_date=%date%" 
echo %dt%|DATE >NUL 2>&1 && (
    echo %saved_date%|DATE >NUL 2>&1 
) || (
    echo %saved_date%|DATE >NUL 2>&1 
    echo %dt% is not a valid date 
    goto :EnterDate 
) 

:CopyFile 
echo %dt% 
echo xcopy C:\Users\hkum29\Desktop\Source\*.* C:\Users\hkum29\Desktop\Destination\*.* /d:%dt% 
EndLocal 
Pause 

exit/B 
+0

使用'mm-dd-yyyy'只能在en_US等语言环境中的系统上运行。使用'robocopy'可能是更好的选择。 – lit

1

IF语法if string1 operator string2 action

如果string1string2被“援引”(允许字符串包含空格),然后BOTH字符串必须加引号。

批没有“部分”,“功能”,“程序”或“段落”的概念。标签只是一个参考点。通过线到达标签时执行不会停止,它只是继续通过,行,直到它到达结束文件,CALL,一个GOTOEXIT

相关问题