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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Закрытая тема
Настройки темы
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

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


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

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


Внимание!


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

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь в написании батника". Это и так понятно Заголовок темы должен быть осмысленным.





Исходный вопрос участника
Всех приветствую.
Задача следующая: смотрим в в каталог (например d:\dir\*.*) и если в нем сущетвуют файлы возраст которых более 40 дней, то отправляем email на указанный адрес.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:17, 01-11-2005

 

Пользователь


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

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


amel27, спасибо большое. Работает.

а как можно указать список папок в которых должно искать? например img, image, picture, photo чтоб не искало по всему диску а именно по таким папкам если они существуют?

и еще одно, как указать все локальные диски для поиска?

Последний раз редактировалось Freezet, 13-10-2008 в 18:04.


Отправлено: 17:49, 13-10-2008 | #371



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

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


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


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

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


подскажите такую простую вещь
только начал капатся с bat-cmd

перетаскиваю файл на bat файл
соответсвенно переменная %1 возращает путь этого файла
мне нужно выделить из пути только имя файла и "прибавить".jpg

copy image.jpg /b + %1 /b <имя файла %1+.jpg>

Отправлено: 20:04, 13-10-2008 | #372


Аватара для gora

Ушёл из жизни


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

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


Цитата porosenok:
переменная %1 возращает путь этого файла
мне нужно выделить из пути только имя файла и "прибавить".jpg »
Цитата:
%~n1 - из переменной %1 выделяется только имя файла
Для вашего случая будет: %~n1.jpg
Для подробностей см. Пуск - Выполнить - набрать в ком строке: For /?

Здесь выкладывал справку по консольным командам

Отправлено: 20:13, 13-10-2008 | #373


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


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

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


чиорт в моем примере всеравно чето не стыкуется
видимо в команде copy не допускается подстановки пути
если вместо %1 использовать имя файла, предварительно положив файл в туже папку - то работает

-------
http://bulakhova.tks-v.ru


Отправлено: 20:33, 13-10-2008 | #374


Аватара для rBBWYwg

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


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

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


Как написать батник, который бы создавал файлы, соответствующие заранее составленному списку?
То есть, в директории лежит файл списка list.txt, в котором:
1.txt
2.txt
3.txt
и батник test.bat, который должен обратиться к этому списку и создать соответствуюшие файлы:
1.txt, 2.txt, 3.txt.
В точном соответствии с именем и количеством.

Отправлено: 00:54, 14-10-2008 | #375


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


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

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


Код: Выделить весь код
@ECHO OFF
REM Код читает файл LIST.TXT построчно по одному слову и создает 
REM пустые файли с именами соответствующими тому что прчитано.
REM Код может принимать один параметр: Папку в которой создавать
REM файлы. Если указанной папки не окажется, то она будет создана.
REM  Если параметр не задан, то файлы создадутся с Current Work Path(в рабочем каталоге).




IF NOT EXIST LIST.TXT GOTO NOLISTF


@IF NOT "%1"=="" (
IF NOT EXIST %1\NUL MD %1 > NUL
CD /D %1  > NUL
 )


FOR /F "TOKENS=1" %%I IN ('TYPE %~DP0LIST.TXT') DO IF NOT "%%I"=="" (
IF NOT EXIST %%I\NUL ECHO. > %%I
ECHO MAKE %%I
 )
GOTO SUCC

:NOLISTF
ECHO LIST.TXT: FILE NOT FOUND.
PAUSE
GOTO END

:SUCC
ECHO OPERATION SUCCESSFULLY.
PAUSE

:END
Фактически по вопросу работает одна строчка
Код: Выделить весь код
 
FOR /F "TOKENS=1" %%I IN ('TYPE LIST.TXT') DO IF NOT "%%I"=="" ECHO. >%%I
Т.е здесь читается файл LIST.TXT причем одно слово из строчки и переходит на новую строчку. Значит файл LIST.TXT должен быть таким:
Код: Выделить весь код
 
1.txt
2.txt
3.txt
а не таким:
Код: Выделить весь код
 
1.txt 2.txt 3.txt
В послелнем случае создастся один файл 1.txt.

Последний раз редактировалось ___oj, 14-10-2008 в 05:03.


Отправлено: 04:53, 14-10-2008 | #376


Googler


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

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


illznn
сам батник запускается?... если нет, то все вопросы сюда:
Файл ответов Winnt.sif .:[все вопросы, уточнения, не срабатывает установка, etc]:.

Freezet
Цитата:
как можно указать список папок в которых должно искать? например img, image, picture, photo чтоб не искало по всему диску а именно по таким папкам если они существуют? »
не совсем корректная постановка задачи - пути к папкам указываются целиком или только по имени подкаталога?.. В последнем случае при поиске с подкаталогами файлы могут дублироваться... например, файлы "C:\IMG\IMG\*.jpg" будут скопированы дважды: "C:\IMG" и "C:\IMG\IMG"... без подкаталогов тоже вроде нет смысла искать. Как вариант: искать во всех папках, но копировать по условию наличия в имени папок типа "\IMG\".

Цитата:
как указать все локальные диски для поиска?
по какому условию отбирать диски?... варианты:
- явным перечислением;
- все несетевые диски (включая CD/DVD/USB);
- только конкретного типа;
- другие варианты?

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

Copy /B "%~dp0image.jpg" + "%~f1" "%~dpn1.jpg"

PAUSE
rBBWYwg
Код: Выделить весь код
For /F "Delims=" %%i In (list.txt) Do @Echo.>%%i

Последний раз редактировалось amel27, 14-10-2008 в 12:48. Причина: ADD


Отправлено: 07:15, 14-10-2008 | #377


Пользователь


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

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


amel27,

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

Цитата amel27:
по какому условию отбирать диски?... варианты: »
по не сетевым (hdd) и сьемным (usb)

тогда как я понимаю нужно исключить из поиска ту папку в которую будет копироваться информация

Отправлено: 13:32, 14-10-2008 | #378


Googler


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

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


Freezet
Цитата:
как я понимаю нужно исключить из поиска ту папку в которую будет копироваться информация »
можно просто почистить целевую папку, скинуть список в файл и только потом копировать по списку
Цитата:
по не сетевым (hdd) и сьемным (usb) »
вариант для всех локальных за исключением CD/DVD приводов, версия XP должна быть русской
(имя временного файла - имя CMD-файла с расширением .LST)
Код: Выделить весь код
@Echo Off

Set $MSK=*.CMD
Set $DST=X:\FILES
Set $LST=%TEMP%\%~n0.tmp

If Exist "%$LST%" DEL /F /Q "%$LST%"
If Exist "%$DST%" (
    @Echo Удаление каталога назначения:
    RD /S "%$DST%"
)
MD "%$DST%"

@Echo.
For /F "Tokens=3 Delims= " %%i In ('@Echo List Volume^|@DiskPart^|@FindStr /RBC:"  *Том [0-9]  *[A-Z] "^|Find /V "-ROM"') Do (
    @Echo Формирование списка файлов по маске "%%i:\%$MSK%"...
    DIR /B/S/A:-D "%%i:\%$MSK%" >>"%$LST%"
)

@Echo.
@Echo Копирование отобранных файлов в назначенную папку...
For /F "Delims=" %%i In ('FindStr /VBRIC:"[A-Z]:\\RECYCLER\\S" /C:"[A-Z]:\\$RECYCLE.BIN\\S" "%$LST%"') Do (
    Call :FileGetNewName "%%i" "%$DST%"
    Call :FileCopy "%%i"
)
If Exist "%$LST%" DEL /F /Q "%$LST%"

@Echo Работа скрипта завершена.
Exit

:FileCopy
:: ---
:: %1 - полное имя исходного файла, включая путь
:: ---
:: @Echo.%~1
Copy "%~1" "%FileGetNewName%" >Nul
GoTo :EOF

:FileGetNewName
:: ---
:: %1 - полное имя исходного файла, включая путь
:: %2 - путь к целевому каталогу
:: ---
Set $I=
Set FileGetNewName=

If Not Exist "%~1" GoTo :EOF
For %%i In ("%~1") Do Set $N=%%~ni
For %%i In ("%~1") Do Set $X=%%~xi

:FileGetNewName_LOOP

Set FileGetNewName=%~2\%$N%%$I%%$X%
If Not Exist "%FileGetNewName%" GoTo :EOF
Set /A $I +=1
GoTo FileGetNewName_LOOP

Последний раз редактировалось amel27, 18-10-2008 в 09:29.

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

Отправлено: 07:51, 15-10-2008 | #379


Пользователь


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

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


amel27, призапуске бат файла создало файл с именем етого же бат файла и расширением .lst и папку Files но в папке пусто

Отправлено: 17:07, 15-10-2008 | #380



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] VBS/WSH. Сортировка файлов по дате. rancid Скриптовые языки администрирования Windows 3 23-07-2009 06:38
[решено] Как с помощью CMD(BAT) запустить запароленный sfx архив! ofcoss Автоматическая установка приложений 7 10-07-2009 00:41
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок Nun-Nun Скриптовые языки администрирования Windows 6 14-05-2009 15:45
Нужна снова ваша помощь в написании интересного скрипта Magnus Вебмастеру 2 09-06-2005 20:26
Нужна помощь в написании скрипта Magnus Вебмастеру 7 06-05-2005 10:53




 
Переход