Цикл по каталогу, пауза для пользовательских изменений, отображение имени нового каталога в командном файле - PullRequest
0 голосов
/ 17 мая 2019

Я использую ниже.Я использовал FC и COMP для просмотра файлов, сгенерированных DIR.Нет, не совсем уверен, как решить эту проблему.

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

 (for /d %%i in ("%~dp0") do (

 pause>nul|set/p =Add folder..

 if exist "%~dp0%%~nxi" echo(%%~i)

 )

 cmd /k

1 Ответ

1 голос
/ 17 мая 2019

Чтобы указать количество каталогов в текущем пути:

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

@echo off
:start
echo Press Enter when you want to see the new Foldername:
pause >nul
cls
for /f %%i in ('dir /b /ad /o-d') do set "newfolder=%%i" & goto reveal
:reveal
echo New Folder is "%newfolder%"
goto start

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

Вы также можете добавить счетчик, который покажет вам количество папок:

@echo off
:start
echo Press Enter when you want to see the new Foldername:
pause >nul
cls
for /f %%a in ('dir ^| findstr /i "Dir(s)"') do set count=%%a
for /f %%i in ('dir /b /ad /o-d') do set "newfolder=%%i" & goto reveal
:reveal
echo Number of folders: %count%
echo Latest Folder:     "%newfolder%"
goto start

Или, если вы хотите увидеть полный путь к папке, а не просто новое имя, используйте %%~fi:

@echo off
:start
echo Press Enter when you want to see the new Foldername:
pause >nul
cls
for /f %%a in ('dir ^| findstr /i "Dir(s)"') do set count=%%a
for /f %%i in ('dir /b /ad /o-d') do set "newfolder=%%~fi" & goto reveal
:reveal
echo Number of folders: %count%
echo Latest Folder:     "%newfolder%"
goto start

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

@echo off
set newfold=
set oldfold=
:start
for /f %%i in ('dir /b /ad /o-d') do set "newfold=%%i" & goto reveal
:reveal
if not defined oldfold set "oldfold=%newfold%"
if not "%newfold%"=="%oldfold%" (
    echo New Folder detected: %newfold%
    set oldfold=%newfold%
)
timeout /t 3 /nobreak >nul
goto start
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...