簡體   English   中英

創建目錄和子目錄崩潰

[英]Create Directory and sub directories crashing

該腳本接受用戶輸入然后崩潰

嘗試重命名文件和變量,以及組合變量。

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

您也不需要回聲中的引號,除非您只是希望它回顯引號。

一個更簡單的想法:

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 arked行,你目前有超過什么最終用戶在每次提示進入,便可以進入什么什么的,(包括無效字符)管不着!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM