Batch file 使用用户提示和xcopy创建批处理脚本文件
我正在尝试创建一个批处理脚本文件,以帮助工作组中的管理助理。我们叫他约翰吧 John每天从客户那里收到许多CD,其中包含作为PDF格式的建筑图纸。每张CD都是独一无二的。John为其分配一个应用程序编号,并在网络驱动器上创建一个新文件夹,该文件夹的名称为应用程序编号。然后,John将CD上的所有文件复制到新创建的文件夹名中。他对收到的每一张CD都重复这个过程 我没有任何编程经验,希望你能帮我一把。下面是我写的,但它不起作用。我收到一个“内存不足”错误。基于用户输入的新文件夹名称已在网络驱动器路径上正确创建,但为空 谢谢你的帮助!仅供参考,我运行的是64位Windows 7Batch file 使用用户提示和xcopy创建批处理脚本文件,batch-file,cmd,Batch File,Cmd,我正在尝试创建一个批处理脚本文件,以帮助工作组中的管理助理。我们叫他约翰吧 John每天从客户那里收到许多CD,其中包含作为PDF格式的建筑图纸。每张CD都是独一无二的。John为其分配一个应用程序编号,并在网络驱动器上创建一个新文件夹,该文件夹的名称为应用程序编号。然后,John将CD上的所有文件复制到新创建的文件夹名中。他对收到的每一张CD都重复这个过程 我没有任何编程经验,希望你能帮我一把。下面是我写的,但它不起作用。我收到一个“内存不足”错误。基于用户输入的新文件夹名称已在网络驱动器路径
@echo off
echo Welcome team member!
pause
set /p anumber=Type in the Application Number then press Enter key when done.
mkdir "S:\ARCH\Active Forms and Files\Submittal Floor Plans\%anumber%\"
:: e:\ is the CD drive path
set source=e:\
:: S:\ is a network drive
set destination="S:\ARCH\Active Forms and Files\Submittal Floor Plans\%anumber%\"
xcopy %source%\* %destination%\* /s /e /l /h /i >nul
pause
exit
您将变量
%source%
设置为e:\
,在%source%\*
中使用时,解释器将该变量读取为e:\\*
,导致目录无效。对%destination%
变量也进行了同样的操作
更新脚本:
@echo off
set "networkFolder=S:\ARCH\Active Forms and Files\Submittal Floor Plans"
set "CDDrive=e:"
echo Welcome team member!
:input
set "applicationNo="
set /p "applicationNo=Enter the Application Number and press ENTER: "
if not defined applicationNo goto :input
set "newLocation=%networkFolder%\%applicationNo%"
:actions
md "%newLocation%"
xcopy %CDDrive%\* "%newLocation%" /s /e /i /h>nul
echo Completed!
pause
山姆,这太棒了!对你的帮助我感激不尽!你为我的朋友节省了无数个小时的单调工作。你让我高兴极了。我很高兴!顺便说一句,我错误地使用了xcopy/l开关,因此没有复制任何文件。一旦我删除了/l开关,所有的东西都复制得很好。
E:\
实际上并不是无效的,它指向E:
的根目录,就像E:\
一样……知道“E:\\”很好。另外,谢谢你清理我的帖子,aschipfl。它读得更清楚。:)我认为/I
选项在这里非常有意义,可以避免出现文件/目录提示;但是,需要删除/L
选项才能真正复制某些内容…我同意/I选项。根据Microsoft网站,“默认情况下,xcopy会提示您指定目标是文件还是目录。xcopy
命令不会复制任何内容,除非您删除/L
选项--请参见xcopy/?
…是的,我现在意识到了。如果我想将CD的内容与目标文件夹进行比较,一种错误检查,以确保所有内容都被正确复制,如何通过批处理文件来实现这一点?谢谢