PDA

Показать полную графическую версию : [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31

D_Master
02-10-2008, 15:29
Всем привет! Есть два вопроса:
1. Возможно ли через bat/cmd/vbs/wsh определить ID железа (типа, PCI\VEN_10DE&DEV_0402&SUBSYS_2A83107D&REV_A1) и т.д. Если возможно, то как это мона реализовать?)
2. Можно ли через bat/cmd/vbs/wsh задать параметр следующей загрузки (надо, чтобы юзер автоматом ребутился в безопасный режим)?

Petya V4sechkin
02-10-2008, 15:45
определить ID железа (типа, PCI\VEN_10DE&DEV_0402&SUBSYS_2A83107D&REV_A1)
DevCon (http://support.microsoft.com/kb/311272/ru)

задать параметр следующей загрузки (надо, чтобы юзер автоматом ребутился в безопасный режим)?
Bootcfg /?
[решено] Первый вход в Безопасном режиме с правами админа (http://forum.oszone.net/thread-77674.html)

Delirium
03-10-2008, 01:03
Господа, прошу Вашей помощи:
необходим bat или wsh файл, который должен быть запущен на сервере и мониторить некоторые файлы. Для чего это надо: http://forum.oszone.net/post-913907.html#post913907 , пост 10.
Т.е. надо открывать папку, в которой находятся файлы без расширения и с именем, равному IP компьютера, на который был выполнен вход. Файлы должны создаваться простым скриптом logon, что то типа этого:
if not exist \\server\share\%IP% copy > \\server\share\%IP%
где %IP% - IP адрес компа, на котором выполнен вход.
bat файл должен пробегать по \\server\share\*.* , и совершать выход из системы для всех компьютеров, кроме первого в папке. Выход осуществляется при помощи запуска бесплатной утилиты из состава lanshutdown (www.LanTricks.com), в качестве аргумента ей необходим IP удаленной машины. синтаксис
LanShutDownC -a %IPADDRESS% -wl

amel27
07-10-2008, 06:58
Господа, прошу Вашей помощи »
конкретней - что не получается?.. для массовой обработки файлов/компов имхо батник удобней/быстрее

vaska_sv
09-10-2008, 15:06
У меня проблема такого типа:

Есть файл зараженый вирусом на ~120 ПК, при загрузке системы он автоматом загружается и не дает себя завершить через taskmgr. помогите написать батник который принудительно завершит процес и удалит его из папки!?

Petya V4sechkin
09-10-2008, 16:00
и не дает себя завершить через taskmgr.
Думаете, из командной строки получится убить?
Для снятия процессов можно использовать Taskkill (стандартная команда в XP/2003 и старше), Pv.exe (здесь (http://www.teamcti.com/pview/prcview.htm) The command-line utility), Nircmd (http://www.nirsoft.net/utils/nircmd2.html) (опция killprocess), PsKill (http://technet.microsoft.com/ru-ru/sysinternals/bb896683.aspx).

amel27
10-10-2008, 04:55
vaska_sv, попробуйте переименовать файл процесса через REN и перегрузиться

Freezet
12-10-2008, 22:19
такая задача. нужен батник который бы на определеном локальном диске искал файлы расширения jpg и копировал в один каталог.

спасибо :)

amel27
13-10-2008, 05:00
Freezet

вариант с переименованием (если целевой файл уже существует):
@Echo Off

Set $SRC=C:\*.JPG
Set $DST=D:\FILES

If Not Exist %$DST% MD %$DST% 2>Nul
If Not Exist %$DST% (
@Echo Ошибка! Целевой каталог не обнаружен.
Exit
)
For /F "Delims=" %%i In ('DIR /B/S/A:-D %$SRC%') Do (
Call :FileGetNewName "%%i" "%$DST%"
Call :FileCopy "%%i"
)

Exit

:FileCopy
:: ---
:: %1 - полное имя исходного файла, включая путь
:: ---
Echo From: %~1
Echo To : %$N%%$I%%$X%
Echo.
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

illznn
13-10-2008, 17:05
Всем доброго времени суток.


[GuiRunOnce]
"%CDFolder%\I386\SVCPACK\USERACCOUNTS.BAT"

При входе в систему пишет "Не удаеться найти указаный путь"
Может есть еще какиенибуть варианты чтобы запустить батник.
Из этого батника запускаються рядомлежащие приложения с безшумной инсталяцией, регфайлы, настройки системы, пользователи\безопасность и т.д.
Вобщем хотелось чтобы он выполнялся именно при первом входе.

Freezet
13-10-2008, 17:49
amel27, спасибо большое. Работает.

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

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

porosenok
13-10-2008, 20:04
подскажите такую простую вещь
только начал капатся с bat-cmd

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

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

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

Здесь (http://forum.oszone.net/post-865931.html#post865931) выкладывал справку по консольным командам

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

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

___oj
14-10-2008, 04:53
@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.

amel27
14-10-2008, 07:15
illznn
сам батник запускается?... если нет, то все вопросы сюда:
Файл ответов Winnt.sif .:[все вопросы, уточнения, не срабатывает установка, etc]:. (http://forum.oszone.net/thread-47582.html)

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

Freezet
14-10-2008, 13:32
amel27,

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

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

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

amel27
15-10-2008, 07:51
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

Freezet
15-10-2008, 17:07
amel27, призапуске бат файла создало файл с именем етого же бат файла и расширением .lst и папку Files но в папке пусто




© OSzone.net 2001-2012