Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Сканирование папки на файлы с определённым расширением (http://forum.oszone.net/showthread.php?t=314083)

IDROID 20-04-2016 23:34 2628163

Сканирование папки на файлы с определённым расширением
 
Доброго дня!

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

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

alpap 21-04-2016 09:53 2628244

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% »

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

IDROID 21-04-2016 14:16 2628332

Цитата:

Цитата 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 »

Создается только один файл ".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 21-04-2016 16:11 2628372

Цитата:

Цитата IDROID
вывод переменной с разными значениями »

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

set "user=%%~na"
, строку
Код:

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

IDROID 21-04-2016 21:17 2628440

Цитата:

Цитата alpap (Сообщение 2628372)
Цитата:

Цитата IDROID
вывод переменной с разными значениями »

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

set "user=%%~na"
, строку
Код:

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

Возможно, я плохо объяснил :(
Давайте еще раз)
Есть папка, в которую постоянно будут приходить файлы с расширением .message. Нужен скрипт, который будет постоянно сканировать эту папку на эти файлы, поочередно брать имя файла и придавать ему переменную %user%. Потом читает содержимое файла и придает ему переменную %message%.
Потом выводит все это в формате :
[%date%-%time%][%user%] : %message%
И снова проделывать те же действия для других файлов с расширением .message.

Возможно такое сделать на cmd?

alpap 21-04-2016 21:39 2628448

Цитата:

Цитата IDROID
Потом выводит все это в формате »

- куда?

IDROID 22-04-2016 23:35 2628793

Цитата:

Цитата alpap
- куда? »

В окно командной строки

alpap 23-04-2016 00:53 2628801

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 29-04-2016 13:16 2630636

Цитата:

Цитата 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 »

Спасибо)


Время: 19:49.

Время: 19:49.
© OSzone.net 2001-