Войти

Показать полную графическую версию : [решено] Создание txt файла при добавлении файла в архив rar, немного дополнить скрипт


Страниц : 1 [2]

Iska
01-09-2017, 17:28
ndrjjzbv, а если ещё добавить в findstr.exe параметр «/r» ;)?

Вы не стесняйтесь читать документацию (в данном случае — «findstr.exe /?»), ибо иначе грош цена всей помощи будет.

ndrjjzbv
01-09-2017, 17:56
Ключ /C: при использовании регулярных выражений должен использоваться в команде совместно с ключом /R
зачем нужны [0-9][0-9], с ними папки не исключаются
при ключе /r все работает без [0-9][0-9]

Iska
01-09-2017, 18:19
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] вводить не требуется?

Iska
01-09-2017, 18:40
ndrjjzbv, если Вы хотите просто перечислить несколько имён, не вдаваясь в тонкости регулярных выражений (которые к тому же в findstr.exe весьма и весьма ограниченные), используйте параметр «/l» вместо «/r», а затем просто перечислите искомые имена посредством параметра «/c»:
findstr.exe /v /l /c:"Мама" /c:"мыла" /c:"раму"

P.S. Если приведёте полный набор исключений, посмотрим, что лучше будет использовать — перечисление, регулярки или даже внешний файл.

ndrjjzbv
01-09-2017, 18:56
Iska
Спасибо, ваш способ решил задачу

Iska
01-09-2017, 19:10
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