Цикл пакетного файла не включает вложенный цикл - PullRequest
0 голосов
/ 25 октября 2018

Edit1:

Так что, похоже, мой цикл запускается до самой последней записи, а затем выполняет команды mkdir и MOVE.Я чувствую, что где-то не хватает скобок?

FOR %%i IN (%folderPath%\*.Pdf) DO SET fileName=%%i
  ECHO %fileName%
FOR /f "tokens=3-4 delims=_" %%a IN ("%fileName%") DO SET fileClientID=%%a_%%b
  ECHO %fileClientID%

REM Check to see if folders exist, and if they do not, create them
IF NOT EXIST "%folderPath%\%fileYear%" mkdir %folderPath%\%fileYear%

IF NOT EXIST "%folderPath%\%fileYear%\%fileMonth%" mkdir %folderPath%\%fileYear%\%fileMonth%

IF NOT EXIST "%folderPath%\%fileYear%\%fileMonth%\%fileClientID%" mkdir %folderPath%\%fileYear%\%fileMonth%\%fileClientID%

REM Moves the file from source path to destination path
SET fileSourcePath="%fileName%"
SET fileDestPath="%folderPath%\%fileYear%\%fileMonth%\%fileClientID%"

MOVE "%fileSourcePath%" "%fileDestPath%"

PAUSE

1 Ответ

0 голосов
/ 27 октября 2018

Итак, я наконец-то закончил код и все работает как надо.Я действительно ценю помощь каждого, которая привела меня к этому моменту, так как это мой первый скрипт пакетного файла, который я когда-либо писал.Итоговый продукт ниже и, конечно, если есть какие-либо передовые практики или более эффективные способы написания, я буду рад обратной связи.Еще раз спасибо!

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

SET folderPath="C:\Users\nha\Desktop\FolderMover\Test"

FOR %%a IN (%folderPath%\*.Pdf) DO (
  SET fileDate=%%~ta
  SET fileName=%%a
FOR /f "tokens=1,3 delims=/, " %%a IN ("!fileDate!") DO (
  SET fileYear=%%b
  SET fileMonth=%%a
For /f "tokens=3-4 delims=_" %%a IN ("!fileName!") DO (
  SET fileClientID=%%a_%%b
IF NOT EXIST !folderPath!\!fileYear!\!fileMonth!\!fileClientID! mkdir !folderPath!\!fileYear!\!fileMonth!\!fileClientID!
  SET fileSourcePath=!fileName!
  SET fileDestPath=!folderPath!\!fileYear!\!fileMonth!\!fileClientID!
  MOVE !fileSourcePath! !fileDestPath!
    )
  )
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...