Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверить процесс, создать папку "AT-1" в папке "AT" и вместе с ее файлами и папками

Ответить
Настройки темы
CMD/BAT - [решено] Проверить процесс, создать папку "AT-1" в папке "AT" и вместе с ее файлами и папками

Аватара для KOD65001

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть папка "AT" с постоянным именем, полный путь C:\AT

Есть папка "M" тоже с постоянным именем, полный путь C:\M

В папке "M" есть еще папка с файлами и подпапками. Имя папки, которая лежит в папке "M" всегда разное
и может принимать вид, например такой: "Блок © VF 办公室"

Нужно чтобы при запуске BAT скрипта выполнялась проверка процесса "calc.exe"


1) Если процесс "calc.exe" есть, то

Ожидать когда процесс "calc.exe" завершится, чтобы выполнить пункт (2)


2) Если процесса "calc.exe" нету, то

создать папку "AT-1" в папке "AT" и всю папку "Блок © VF 办公室" вместе с ее файлами и подпапками переместить в созданную папку "AT-1", но
только в том случае если в папке "AT" нету папки "AT-1", а если папка "AT-1" уже есть, то создать папку "AT-2" и переместить туда!
затем закрыть BAT скрипт.

P.S. В папке "M" файлы и подпапки могут быть с разными именами, расширениями, размерами и атрибутами (системные, скрытые, только для чтения)


Это пример ДО выполнения скрипта:

C:\AT\AT-1\Круг © VF 办公室\VF 办公室 © Круг\Круг.txt

C:\M\Блок © VF 办公室\VF 办公室 © Блок\Блок.exe


Это пример ПОСЛЕ выполнения скрипта:

C:\AT\AT-1\Круг © VF 办公室\VF 办公室 © Круг\Круг.txt

C:\AT\AT-2\Блок © VF 办公室\VF 办公室 © Блок\Блок.exe

C:\M\

Отправлено: 14:22, 04-07-2020

 

Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
param(
    $folder = "© VF 办公室",
    $proc   = "*calc",
    $pathAT = "C:\AT",
    $pathM  = "C:\M"
)cls

while(ps $proc -ea 0){sleep 1}
$at=1;if($at=([int]( gci  $pathAT  AT-* ).name[-1][-1].ToString())){$at++}
Move -l (gci $pathM *$folder).FullName (ni -i d "$pathAT\AT-$at").FullName

Последний раз редактировалось Fors1k, 04-07-2020 в 18:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:19, 04-07-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для KOD65001

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Fors1k спасибо, но это не совсем то что нужно. Я же не просто так указал категорию темы "CMD/BAT", а не PowerShell.

Отправлено: 19:16, 04-07-2020 | #3


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата KOD65001:
Я же не просто так указал категорию темы "CMD/BAT" »
Если требуется решение проблемы, то не имеет значения инструмент.
Если же требуется решение учебного задания, то оно не просто так дается студенту, а именно для того, чтобы он самостоятельно его решил, тем самым обогатив собственный опыт и знания. И что самое главное, задание выдается совсем не для того, чтобы студенты искали решение на профильных форумах...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 04-07-2020 | #4


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата KOD65001:
Я же не просто так указал категорию темы "CMD/BAT", а не PowerShell. »
Вообще, стоит уже забыть про cmd.

Разработка cmd была остановлена после выхода Windows 2000.В качестве основной командной оболочки используется PowerShell.
PowerShell заменяет командную строку. Если сказать совсем простым языком, то powershell - это и есть cmd, если у вас не Pentium2 на windows95.

Вы же, например, на море не на повозке ездите, а летаете на современном самолете.

Последний раз редактировалось Fors1k, 04-07-2020 в 20:50.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:43, 04-07-2020 | #5


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Тем не менее, "прогрессивное большинство" уже задрало сыпать в темы по cmd/bat офтопики на PoSh'е. Не нравится структура форума - иди с предложениями к администратору форума. А пока извольте следовать правилам.
Я сам предпочитаю решать задачи посредством PowerShell, но
1. Он не всегда есть - в том же PE, контейнерах
2. Он тяжело запускается - "примитивный" healthcheck, реализованный подобным образом, выжирает нереально много ресурсов
В темах про .bat люди ожидают находить решения на .bat
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:45, 04-07-2020 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Busla:
В темах про .bat люди ожидают находить решения на .bat »
Если они возможны.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:50, 04-07-2020 | #7


Аватара для KOD65001

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Тогда это не подходит PowerShell не подходит.
Есть ещё какие-то варианты? например на VBS?

Цитата Busla:
Тем не менее, "прогрессивное большинство" уже задрало сыпать в темы по cmd/bat офтопики на PoSh'е. Не нравится структура форума - иди с предложениями к администратору форума. А пока извольте следовать правилам.
Я сам предпочитаю решать задачи посредством PowerShell, но
1. Он не всегда есть - в том же PE, контейнерах
2. Он тяжело запускается - "примитивный" healthcheck, реализованный подобным образом, выжирает нереально много ресурсов
В темах про .bat люди ожидают находить решения на .bat »
Busla, в отличии от Вас я следую правилам! Я ничего не говорил про структуру форума! Не нужно хамить участникам форума, такое поведение здесь не уместно!

YuS_2, я не являюсь студентом!

Отправлено: 00:08, 05-07-2020 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


KOD65001, Ваш алгоритм неполон.
  1. Что делать, когда в каталоге C:\M нет ни одного подкаталога?
  2. Что делать, когда в каталоге C:\M более одного подкаталога?
  3. Что делать, если в каталоге C:\AT есть и подкаталог AT-1, и подкаталог AT-2?
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:58, 05-07-2020 | #9


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

:check

tasklist | 1>nul findstr Calculator.exe && (
    1>nul timeout /t 1
    goto:check
)

2>nul (for /f "tokens=2 delims=-" %%i in ('dir /b /ad C:\AT\AT-*') do set /a "int=%%i+1")

if not defined int set "int=1"

dir /b C:\M | 1>nul findstr . && (

    md "C:\AT\AT-%int%"
    for /f "tokens=*" %%i in ('dir /b /ad "C:\M"') do move "C:\M\%%i" "C:\AT\AT-%int%"
)
с учетом дополнительных проверок,

Последний раз редактировалось Foreigner, 05-07-2020 в 02:00.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:36, 05-07-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверить процесс, создать папку "AT-1" в папке "AT" и вместе с ее файлами и папками

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужно создать "батник" - вырезать из "2.txt" первых n строк и вставить их в "1.txt" temphard Скриптовые языки администрирования Windows 12 10-01-2014 18:36
Интерфейс - [решено] пропала кнопка "Создать контакт" в папке "Контакты" 75Roman Microsoft Windows 7 5 26-04-2012 21:19
Доступ - [решено] Надо расшарить папку "буфер" и в ней создать папку "личное" и закрыть к ней доступ stv_J Microsoft Windows 2000/XP 20 20-11-2010 13:09
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход