CMD/BAT - Сканирование папки на файлы с определённым расширением

Ответить
Аватара пользователя
IDROID

CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение IDROID »

Доброго дня!



Нужно написать скрипт, который будет постоянно сканировать папку на файлы с расширением .message. При их обнаружении нужно чтобы скрипт считал название файла без расширения и присвоил этому названию переменную %user%, считал содержимое файла и присвоил ему переменную %message% переименовал файл в .message.used и продолжил сканирование папки.



Буду признателен за любую помощь. Заранее спасибо.
Аватара пользователя
alpap

Re: CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение alpap »

IDROID,

Почти все что надо:



Код:

Код: Выделить всё

@echo off
set "d=papka"
for /f "delims= eol=" %%a in ('dir/a-d/b "%d%\*.message"') do (
 set "user=%%~na"
 copy/y "%d%\%%a" "%d%\.message.used"
 del /q "%d%\%%a"
)
pause>nul


Цитата IDROID:



считал содержимое файла и присвоил ему переменную %message%
CMD/BAT - Сканирование папки на файлы с определённым расширением




Это, в-принципе, можно сделать поигравшись с буфером и js, но зачем, с помощью того как это реализовано в стр5, загоняете содержимое туда куда...

Проверку на наличие через планировщик, нечего ему отдыхать, а вот, если файлов *.message, будет несколько, то уже вопрос к вам как поступать.
Аватара пользователя
IDROID

Re: CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение IDROID »

Цитата alpap:



Почти все что надо:

Код:

@echo off

set "d=papka"

for /f "delims= eol=" %%a in ('dir/a-d/b "%d%\*.message"') do (

set "user=%%~na"

copy/y "%d%\%%a" "%d%\.message.used"

del /q "%d%\%%a"

)

pause>nul
CMD/BAT - Сканирование папки на файлы с определённым расширением




Создается только один файл ".message.used". Я чуть-чуть изменил скрипт вот так :



@echo off

set "d=%USERPROFILE%\Desktop"

echo %d%

for /f "delims= eol=" %%a in ('dir/a-d/b "%d%\*.message"') do (

set "user=%%~na"

echo "%user%"

copy/y "%d%\%%a" "%d%\%%a.used" >nul

del /q "%d%\%%a"

)

echo Testmsg

pause



Теперь нормально исполняется, но переменная все же только с именем последнего файла, а не каждого по очереди. Можно реализовать вывод переменной с разными значениями для каждого файла?
Аватара пользователя
alpap

Re: CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение alpap »

Цитата IDROID:



вывод переменной с разными значениями
CMD/BAT - Сканирование папки на файлы с определённым расширением




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

Код:

Код: Выделить всё

set "user=%%~na"

, строку



Код:

Код: Выделить всё

break>"%%~na.txt"

и получите в директории bat файла столько созданных .txt файлов сколько файлов .meesage и с их именем соответственно.
Аватара пользователя
IDROID

Re: CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение IDROID »

Цитата alpap:




Цитата IDROID:



вывод переменной с разными значениями
CMD/BAT - Сканирование папки на файлы с определённым расширением




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

Код:

Код: Выделить всё

set "user=%%~na"

, строку



Код:

Код: Выделить всё

break>"%%~na.txt"

и получите в директории bat файла столько созданных .txt файлов сколько файлов .meesage и с их именем соответственно.



Возможно, я плохо объяснил Изображение

Давайте еще раз)

Есть папка, в которую постоянно будут приходить файлы с расширением .message. Нужен скрипт, который будет постоянно сканировать эту папку на эти файлы, поочередно брать имя файла и придавать ему переменную %user%. Потом читает содержимое файла и придает ему переменную %message%.

Потом выводит все это в формате :

[%date%-%time%][%user%] : %message%

И снова проделывать те же действия для других файлов с расширением .message.



Возможно такое сделать на cmd?
Аватара пользователя
alpap

Re: CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение alpap »

IDROID,

как сделать красивее вывод я не знаю (не умею)



Код:

Код: Выделить всё

@echo off
set "d=%USERPROFILE%\Desktop"
for /f "delims= eol=" %%a in ('dir/a-d/b "%d%\*.message"') do (
 for /f "delims= eol=" %%b in ('type "%d%\%%~a"^|more') do (
  echo:%date%-%time:~,8% %%~na %%b
))
pause>nul

.
Аватара пользователя
IDROID

Re: CMD/BAT - Сканирование папки на файлы с определённым расширением

Сообщение IDROID »

Цитата alpap:



IDROID,

как сделать красивее вывод я не знаю (не умею)

Код:

@echo off

set "d=%USERPROFILE%\Desktop"

for /f "delims= eol=" %%a in ('dir/a-d/b "%d%\*.message"') do (

for /f "delims= eol=" %%b in ('type "%d%\%%~a"^|more') do (

echo:%date%-%time:~,8% %%~na %%b

))

pause>nul
CMD/BAT - Сканирование папки на файлы с определённым расширением




Спасибо)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»