Windows 创建目录和子目录崩溃
脚本接受用户输入,然后崩溃 尝试重命名文件和变量,并合并变量Windows 创建目录和子目录崩溃,windows,batch-file,Windows,Batch File,脚本接受用户输入,然后崩溃 尝试重命名文件和变量,并合并变量 cls set /p FN="First Name: " set /p LN="SECOND Name: " set folder="%FN% %LN%" set path="F:\ADMIN\USERS\_USER" set final = %path%\%folder% if not exist %final% ( mkdir %path%\%folder% mkdir %path%\%folder%\Info
cls
set /p FN="First Name: "
set /p LN="SECOND Name: "
set folder="%FN% %LN%"
set path="F:\ADMIN\USERS\_USER"
set final = %path%\%folder%
if not exist %final% (
mkdir %path%\%folder%
mkdir %path%\%folder%\Info
mkdir %path%\%folder%\JOB
mkdir %path%\%folder%\HR
mkdir %path%\%folder%\Department
copy %path%\%folder%\_takeoff.xlsx %path%\%folder%
) else (
echo %path%\%folder% + " is already Created"
)
pause
脚本崩溃
编辑:这是更新的代码。我在指定的位置创建指定的文件。但是,它也会在桌面上创建文件。不确定编辑这里是我应该做的还是问一个新问题
echo off
cls
echo Type The SO number, Customer, and Job named when asked. Then press Enter
echo.
set /p SO="SO #: "
set /p Customer="Customer Name: "
set /p JOB="Job Name: "
set folder="%SO%"_"%Customer%"_"%JOB%"
echo %folder%
set dir="F:\Sales\SALES FOLDER\_QUOTES"
set final="%dir%\%folder%"
set dst="%final%/1 - Estimating Orginal Quote Material"
if not exist %final% (
mkdir "%dst%"
copy /-Y "%dir%\_takeoff.xlsx" %est%
mkdir "%dst%\Downloads"
mkdir "%dst%\Plans"
mkdir "%dst%\Quotes"
mkdir "%dst%\Cut Sheets"
mkdir "%dst%\Venders"
mkdir "%final%\2 - Signed Quote - Contract\Non-Current Purchase Orders"
mkdir "%final%\3 - Special Purchase Trading Goods"
mkdir "%final%\4 - Engineering\2 - Submittals"
mkdir "%final%\4 - Engineering\3 - Approvals"
mkdir "%final%\4 - Engineering\4 - Drawings in Progress\Released Production Drawings"
mkdir "%final%\5 - Final Production Drawings"
mkdir "%final%\6 - Q.C. Document"
mkdir "%final%\7 - Project Management _ Schedule"
)
pause
问题是您在
set final=%path%\%folder%
行上的空间;如果你把那些多余的空间拿出来,你会没事的
为了更进一步,我强烈建议在没有引号的地方添加引号,并将它们移到set
语句中变量的前面,以说明用户可能添加的任何空格:
cls
set /p "FN=First Name: "
set /p "LN=SECOND Name: "
set "folder=%FN% %LN%"
set "mypath=F:\ADMIN\USERS\_USER"
set "final=%mypath%\%folder%"
if not exist "%final%" (
mkdir "%final%"
mkdir "%final%\Info"
mkdir "%final%\JOB"
mkdir "%final%\HR"
mkdir "%final%\Department"
copy "%mypath%\_takeoff.xlsx" "%final%"
) else (
echo %final% is already Created
)
pause
您也不需要echo中的引号,除非您只想让它回显引号。一个更简单的想法:
PushD“F:\ADMIN\USERS\\u USER”2>NUL | |退出/B
ClS
设置“FN=”
Set/P“FN=名字:”
设置“LN=”
设置/P“LN=姓氏:”
Rem注意:您应该在这里执行一些输入验证。
MD“%FN%%LN%”%FN%%LN%\Info”“%FN%%LN%\JOB”“%FN%%LN%\HR”“%FN%%LN%%\Department”2>NUL
如果不存在“%FN%%LN%\\起飞.xlsx”复制“\起飞.xlsx”“%FN%%LN%”
请注意
Rem
arked行,您目前无法控制最终用户在每次提示时输入的内容,他们不能输入任何内容(包括无效字符) 你的代码没有意义!如果“F:\ADMIN\USERS\\u USER\FirstName-name”
不存在,即如果不存在“%final%\”
则在该块中不可能将“F:\ADMIN\USERS\\u USER\FirstName-name-name\\u takeoff.xlsx”
复制到“F:\ADMIN\USERS\\u USER\FirstName-name-name”
,因为您刚刚创建了F:\ADMIN\USERS\\u USER\FirstName姓氏“
并且它没有任何内容,即,\u takeoff.xlsx
尚未位于新创建的目录中@Compo,您是对的。复制路径应该是%path%\u.xls。在制作itI时得到了一点拷贝粘贴,我推荐阅读,最后顺便说一句,脚本不会崩溃。可执行文件可能会崩溃,但在这种情况下,脚本解释器(可执行文件)处理的脚本(如cmd.exe
)不会崩溃。下一次请看如何自己解决这些简单的语法错误。Windows命令处理器输出一条错误消息,其中包含有关脚本处理退出(而非崩溃)原因的信息,因为严重的语法错误导致无法继续处理批处理文件。