【问题标题】:Copy of Source folder (prompt to input the folder name everytime) to Destination folder (prompt to input the folder name everytime)将源文件夹(每次提示输入文件夹名称)复制到目标文件夹(每次提示输入文件夹名称)
【发布时间】:2014-10-24 07:32:40
【问题描述】:

我需要创建一个简单的批处理脚本,可以将文件从源文件夹(提示每次输入文件夹名称)复制到目标文件夹(提示每次输入文件夹名称)并仅复制源文件夹中最新的文件日期。有可能这样做吗?请帮忙

【问题讨论】:

  • 到目前为止,您尝试了什么,遇到了什么错误?
  • 我尝试创建了一个如下的批处理脚本,但没有工作。
  • @ECHO OFF SET SOURCE=C:\Deployment\Bulid SET DESTINATION=C:\Deployment\Bulid SET LOGDIR=C:\For_UAT_Deployment\Log For %%i IN (%LOGDIR%") DO IF NOT EXIST %%~si\NUL (MD "%LOGDIR%") SET SOURCE_ID= ECHO 输入源文件夹名称 SET /P SOURCE_ID=: IF '%SOURCE_ID%'=='' (ECHO ### 错误 - 空白值不允许 ### GOTO END ) 对于 %%i IN ("%SOURCE%\%SOURCE_ID%") DO IF NOT EXIST %%~SI\NUL (ECHO ### 错误 - 文件夹 [%SOURCE%\%SOURCE_ID% ] 不存在 ### GOTO END )
  • for /F "tokens=2-4* delims=/ " %%A in ('DATE/T') do set MMDDYY=%%A-%%B-%%C xcopy " %SOURCE%\%SOURCE_ID%\bin" %DESTINATION%\%DESTINATION_ID%\bin /E /Y /D:%MMDDYY%

标签: batch-file


【解决方案1】:

相关的命令是

set /p "var=prompt"

在提示 prompt

后接受从键盘输入到var

xcopy /d "%var1%\*" "%var2%\"

其中var1var2 是包含您的字符串的环境变量 - 它们被引用以确保正确处理目录名称中的空格(等)。

根据提示尝试

set /?

xcopy /?

了解更多信息和选项。

【讨论】:

  • SET SOURCE_ID= ECHO 输入源文件夹名称 SET /P SOURCE_ID=:"var=prompt" IF '%SOURCE_ID%'=='' ( ECHO ### 错误 - 不允许使用空白值 ## #转到结束
  • 对不起,我完全不懂编程
  • @ECHO OFF for /F "tokens=2-4* delims=/ " %%A in ('DATE/T') 设置 MMDDYY=%%A-%%B-%% C SET SOURCE=C:\Deployment\Bulid SET DESTINATION=C:\Deployment\Bulid SET LOGDIR=C:\For_UAT_Deployment\Log For %%i IN (%LOGDIR%") 如果不存在 %%~si\NUL ( MD "%LOGDIR%" ) SET SOURCE_ID= ECHO 输入源文件夹名称 SET /P "var=prompt" SOURCE_ID=: IF '%SOURCE_ID%'=='' (ECHO ### 错误 - 不允许空白值 ### GOTO END ) For %%i IN ("%SOURCE%\%SOURCE_ID%") DO IF NOT EXIST %%~SI\NUL ( ECHO ### Error - 文件夹 [%SOURCE%\%SOURCE_ID%] 不存在 # ##转到结束)
  • SET DESTINATION_ID= ECHO 输入目标文件夹名称 SET /P "var=prompt" DESTINATION_ID=: IF '%DESTINATION_ID%'=='' ( ECHO ### 错误 - 不允许使用空白值 ## # GOTO END ) For %%i IN ("%DESTINATION%\%DESTINATION_ID%") DO IF NOT EXIST %%~SI\NUL (ECHO ### Error - 文件夹 [%DESTINATION%\%DESTINATION_ID%] 不存在### GOTO END ) xcopy "%SOURCE%\%SOURCE_ID%\bin" %DESTINATION%\%DESTINATION_ID%\bin /E /Y /D:%MMDDYY%
  • 这是我现有的脚本
【解决方案2】:

我使用如下脚本,它现在正在工作。但是是否可以保存一份记录被复制的文件的日志?

@ECHO off
for /F "tokens=2-4* delims=/ " %%A in ('DATE/T') do set MMDDYY=%%A-%%B-%%C

SET /p var1="Source="
SET /p var2="Destination="

xcopy /d "%var1%\bin" %var2%\bin /E /Y %DDMMYY% 

【讨论】:

  • 尝试将 ` >>logfilename.txt` 添加到 xcopy 行。
猜你喜欢
  • 1970-01-01
  • 2014-10-06
  • 2020-08-02
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 2018-09-06
  • 2017-03-31
相关资源
最近更新 更多