PDA

Показать полную графическую версию : Сканирование папки на файлы с определённым расширением


IDROID
20-04-2016, 23:34
Доброго дня!

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

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

alpap
21-04-2016, 09:53
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

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

IDROID
21-04-2016, 14:16
Почти все что надо:
Код:
@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
вывод переменной с разными значениями »
Не понял юмора. В цикле у переменной и есть разные значения, напишите, например, вместо строки set "user=%%~na", строку
break>"%%~na.txt" и получите в директории bat файла столько созданных .txt файлов сколько файлов .meesage и с их именем соответственно.

IDROID
21-04-2016, 21:17
вывод переменной с разными значениями »
Не понял юмора. В цикле у переменной и есть разные значения, напишите, например, вместо строки set "user=%%~na", строку
break>"%%~na.txt" и получите в директории bat файла столько созданных .txt файлов сколько файлов .meesage и с их именем соответственно.

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

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

alpap
21-04-2016, 21:39
Потом выводит все это в формате » - куда?

IDROID
22-04-2016, 23:35
- куда? »
В окно командной строки

alpap
23-04-2016, 00:53
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
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 »
Спасибо)




© OSzone.net 2001-2012