创建目录和子目录崩溃

时间:2019-07-19 14:34:44

标签: windows batch-file

该脚本接收用户输入然后崩溃

尝试重命名文件和变量,并合并变量。

os.system('df -hT /')

脚本崩溃

编辑:这是更新的代码。我在目标位置创建目标文件。但是,它也会在桌面上创建文件。不知道在这里编辑是我应该做的还是提出一个新问题。

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

2 个答案:

答案 0 :(得分:0)

问题是您在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

您也不需要回声中的引号,除非您只希望它回显引号。

答案 1 :(得分:0)

一个简单的主意:

PushD "F:\ADMIN\USERS\_USER" 2>NUL || Exit /B
ClS
Set "FN="
Set /P "FN=First Name: "
Set "LN="
Set /P "LN=Surname: "
Rem Note: You should perform some input verification here.

MD "%FN% %LN%" "%FN% %LN%\Info" "%FN% %LN%\JOB" "%FN% %LN%\HR" "%FN% %LN%%\Department" 2>NUL
If Not Exist "%FN% %LN%\_takeoff.xlsx" Copy "_takeoff.xlsx" "%FN% %LN%"

请注意Rem深色线,您目前无法控制最终用户在每个提示符下输入的内容,他们不能输入任何内容(包括无效字符)!