Есть ли способ создать командный файл, который создает папку в последовательном порядке? - PullRequest
0 голосов
/ 19 сентября 2019

В настоящее время у меня есть пакетный файл, который создает папки, подпапки и копирует файлы шаблонов и изменяет имена этих файлов.

Я пытаюсь создать другой пакет, который вызывается моей исходной партией длясоздайте новую папку в другом каталоге.

У меня есть папки 1-66, и я пытаюсь получить новую партию для создания "67 Имя нового проекта"

Я знаю, как вызвать пакетМне просто нужна помощь с кодом для создания новой папки, которая увеличивается на 1 после прочтения предыдущего номера.

Это моя оригинальная партия

@echo off

SET "pname=New Project Name"

for %%a in ("Bid Proposals" "Reports" "Drawings" "Specifications"
 "Addenda") do md "%pname%\%%~a"

cd /d  K:\ESTIMATING\2019 ESTIMATING\2019 BID-PROPOSALS\%pname%\Bid Proposals
copy "K:\User\Estimating Tools\Bid Proposal - Template.docx" .
rename "Bid Proposal - Template.docx" "%pname% - Bid Proposal.docx"

cd /d  K:\ESTIMATING\2019 ESTIMATING\2019 BID-PROPOSALS\%pname%\Specifications
copy "K:\User\Estimating Tools\Bid Package Info Sheet fillable in progress.pdf" 
rename "Bid Package Info Sheet fillable in progress.pdf" "%pname% - Bid Package Info Sheet.pdf"

Я думаю, что я должен создатьновый пакет, который находится в папке, я хочу создать новые подпапки.

Затем вызовите его из этого пакета.

новый пакет создаст "67. (или что бы ни было следующее число))% pname%" в C: \ Users's Tiffs

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете попробовать это, предполагая, что начало каждого файла числовое, а номера файлов создаются не по порядку, как мы сортируем по дате и времени.

@echo off
setlocal

set "destDir=K:\ESTIMATING\2019 ESTIMATING\2019 BID-PROPOSALS"
set "sourceDir=K:\User\Estimating Tools"

call :GetCounterVal
if "%ctr%"=="0" (
    @echo Cannot locate a counter value
    goto :eof
)

SET "pname=%ctr% New Project Name"

for %%a in ("Bid Proposals" "Reports" "Drawings" "Specifications" "Addenda") do md "%pname%\%%~a"

cd /d  "%destDir%\%pname%\Bid Proposals"
copy "%sourceDir%\Bid Proposal - Template.docx" .
rename "Bid Proposal - Template.docx" "%pname% - Bid Proposal.docx"

cd /d  "%destDir%\%pname%\Specifications"
copy "%sourceDir%\Bid Package Info Sheet fillable in progress.pdf" 
rename "Bid Package Info Sheet fillable in progress.pdf" "%pname% - Bid Package Info Sheet.pdf"
goto :EOF

:GetCounterVal
    :: iterate the files in desc order by date/time
    for /f "eol=: delims=" %%F in ('dir /AD /O-D /B "%*New Project Name*"') do (
        :: read first file, then exit loop
        call :getFile %%F
        goto :break
    )
    :break

    if not "%ctr%"=="0" (set /A ctr=ctr+1)
    @echo New value is %ctr%
goto :EOF

:getFile
    :: Cheap way to automatically parse everything left of first space
    :: If parameter is not a number, it will be set to zero
    set /A ctr=%1
    @echo Last value is %ctr%
goto :EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...