Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 创建目录和子目录崩溃_Windows_Batch File - Fatal编程技术网

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命令处理器输出一条错误消息,其中包含有关脚本处理退出(而非崩溃)原因的信息,因为严重的语法错误导致无法继续处理批处理文件。