Пакет, если файл не существует, создайте другое переименование - PullRequest
0 голосов
/ 03 мая 2018
if not defined filename set filename=123.txt
if not defined folder set folder=January
set BASE_DIR=C:\Users\xxx\Desktop\

set file=%BASE_DIR%%folder%\%filename%

Мне трудно прийти с алгоритмом, чтобы выполнить то, что я пытаюсь сделать.

Каждый раз, когда запускается этот пакетный скрипт, filename и folder могут отличаться.

  • Я пытаюсь проверить, если file exist, если это не нужно делать что-нибудь goto end.
  • Если файл НЕ существует и в этой папке есть другой файл. Мне нужно обновить это имя файла с учетом.

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

Содержимое внутри файла всегда пусто.

Мне не нужен код, мне просто нужна помощь с логикой, чтобы выполнить это.

1 Ответ

0 голосов
/ 03 мая 2018

Этот закомментированный пакетный файл должен помочь вам завершить задачу кодирования пакетного файла:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
if not defined FileName set "FileName=123.txt"
if not defined Folder set "Folder=January"

set "BASE_DIR=%UserProfile%\Desktop"
set "FilePath=%BASE_DIR%\%Folder%"
set "FullFileName=%FilePath%\%FileName%"

rem Exit batch file execution if file already exists.
if exist "%FullFileName%" goto :EOF

rem Create the entire directory structure for the file if directory
rem does not already exist. Note the backslash at end which prevents
rem condition evaluating to true if a file with name "%Folder%"
rem exists in "%BASE_DIR%".
if not exist "%FilePath%\" md "%FilePath%" 2>nul

rem The creation of the directory tree could fail for various reasons.
if not exist "%FilePath%\" (
    echo Error by %~f0:
    echo/
    echo Directory "%FilePath%" could not be created.
    echo/
    pause
    goto :EOF
)

rem Add here more code to create/copy/move file "%FileName%" in/to "%FilePath%".
rem For example creating an empty file:
type NUL >"%FullFileName%"

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

  • echo /?
  • endlocal /? ... здесь явно не используется. cmd.exe автоматически восстанавливает предыдущую среду при прекращении выполнения пакетного файла. См. этот ответ для получения подробной информации о командах SETLOCAL и ENDLOCAL .
  • goto /?
  • if /?
  • md /?
  • rem /?
  • set /?
  • setlocal /?
  • type /?

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...