Batch file 使用用户提示和xcopy创建批处理脚本文件

Batch file 使用用户提示和xcopy创建批处理脚本文件,batch-file,cmd,Batch File,Cmd,我正在尝试创建一个批处理脚本文件,以帮助工作组中的管理助理。我们叫他约翰吧 John每天从客户那里收到许多CD,其中包含作为PDF格式的建筑图纸。每张CD都是独一无二的。John为其分配一个应用程序编号,并在网络驱动器上创建一个新文件夹,该文件夹的名称为应用程序编号。然后,John将CD上的所有文件复制到新创建的文件夹名中。他对收到的每一张CD都重复这个过程 我没有任何编程经验,希望你能帮我一把。下面是我写的,但它不起作用。我收到一个“内存不足”错误。基于用户输入的新文件夹名称已在网络驱动器路径

我正在尝试创建一个批处理脚本文件,以帮助工作组中的管理助理。我们叫他约翰吧

John每天从客户那里收到许多CD,其中包含作为PDF格式的建筑图纸。每张CD都是独一无二的。John为其分配一个应用程序编号,并在网络驱动器上创建一个新文件夹,该文件夹的名称为应用程序编号。然后,John将CD上的所有文件复制到新创建的文件夹名中。他对收到的每一张CD都重复这个过程

我没有任何编程经验,希望你能帮我一把。下面是我写的,但它不起作用。我收到一个“内存不足”错误。基于用户输入的新文件夹名称已在网络驱动器路径上正确创建,但为空

谢谢你的帮助!仅供参考,我运行的是64位Windows 7

@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的内容与目标文件夹进行比较,一种错误检查,以确保所有内容都被正确复制,如何通过批处理文件来实现这一点?谢谢