Показать полную графическую версию : [решено] Создание txt файла при добавлении файла в архив rar, немного дополнить скрипт
ndrjjzbv, а если ещё добавить в findstr.exe параметр «/r» ;)?
Вы не стесняйтесь читать документацию (в данном случае — «findstr.exe /?»), ибо иначе грош цена всей помощи будет.
ndrjjzbv
01-09-2017, 17:56
Ключ /C: при использовании регулярных выражений должен использоваться в команде совместно с ключом /R
зачем нужны [0-9][0-9], с ними папки не исключаются
при ключе /r все работает без [0-9][0-9]
ndrjjzbv, тогда ещё стоит почитать что-нибудь по регулярным выражениям.
/c:"name2[0-9][0-9]*"
означает:
строки, содержащие текст «name», затем цифру «2», затем любую цифру из диапазона от «0» до «9», затем ноль или более цифр из диапазона от «0» до «9»
Таким образом, под данный шаблон регулярного выражения попадут строки:
name22
name222
name2222
name23
name24
name21Мама мыла раму
и не попадут строки:
name2 (всего пять символов, а шаблон требует не менее шести)
name2Вася (шестой символ не цифра из диапазона от «0» до «9» )
name2 2 (шестой символ не цифра из диапазона от «0» до «9» )
name42 (пятый символ не цифра «2»)
ndrjjzbv
01-09-2017, 18:32
Если в конце имени папки отсутствуют цифры, то [0-9][0-9] вводить не требуется?
ndrjjzbv, если Вы хотите просто перечислить несколько имён, не вдаваясь в тонкости регулярных выражений (которые к тому же в findstr.exe весьма и весьма ограниченные), используйте параметр «/l» вместо «/r», а затем просто перечислите искомые имена посредством параметра «/c»:
findstr.exe /v /l /c:"Мама" /c:"мыла" /c:"раму"
P.S. Если приведёте полный набор исключений, посмотрим, что лучше будет использовать — перечисление, регулярки или даже внешний файл.
ndrjjzbv
01-09-2017, 18:56
Iska
Спасибо, ваш способ решил задачу
ndrjjzbv, до кучи, ещё, наверное, и параметр «/i» может есть смысл пользовать, дабы не учитывать регистр символов.
megaloman
01-09-2017, 19:42
ndrjjzbv, @Echo Off
Cls
Set "Mask=*.psd *.jpg"
Set "Fcomment=name.txt"
GoTo :Begin
:Comment
Echo %Date% %Time%
Echo текст 1
Echo текст 2
Echo текст 3
Echo текст 4
GoTo :Eof
:Exclude
Echo C:\Windows\
Echo C:\TMP\
Echo C:\Program Files\
Echo \папка 1\
Echo \папка 2\
Echo \папка 3\
GoTo :Eof
:Begin
Set "Exc=C:\%~n0.txt"
FOR /F "usebackq tokens=1* delims=: " %%i IN (`fsutil fsinfo drives`) DO Set "DiskName=%%j"
>"%Exc%" Call :Exclude
Call :DiskMask %Mask%
Del "%Exc%" 2>nul
GoTo :Eof
:DiskMask
For %%i IN (%DiskName%) DO (
Echo Disk %%i Mask %1
If /I "%%i"=="C:\" (
For /F "usebackq delims=" %%f IN (`xcopy /s /l /EXCLUDE:%Exc% %%i%1 D:\`) DO (
If Exist "%%f" Call :Arc "%%f"
)
) Else (
For /F "usebackq delims=" %%f IN (`xcopy /s /l /EXCLUDE:%Exc% %%i%1 C:\`) DO (
If Exist "%%f" Call :Arc "%%f"
)
)
)
Shift
If Not "%1"=="" GoTo :DiskMask
GoTo :Eof
:Arc
Echo %1
"%PROGRAMFILES%\WinRAR\Rar.exe" a -y -ri15 -dr -m0 -inul "%~dpn1.rar" %1
>"%~dp1%Fcomment%" Call :Comment
GoTo :Eof
Echo C:\Windows\
Echo C:\TMP\
Echo C:\Program Files\
Добавлено в качестве примера
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.