Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 9

Автор: toshanNEW
Дата сообщения: 02.11.2010 01:40
Здравствуйте.
Подскажите, как сделать такую задачу.
В сети есть несколько машин (н-р: comp1, comp2, comp3...)
Необходимо скопировать папку (файл) на все компы (на диск c: - т.е. в c$).
Например список компов будет содержаться в отдельном текстовом файле, по одному на строчку, например, как позволяет сделать тотал коммандер

Код:
comp1\
comp2\
comp3\
...
Автор: BVV63
Дата сообщения: 02.11.2010 06:29
toshanNEW

Код: For /F "UseBackQ" %%0 In (`Type "текстовый_файл"`) Do Copy /Y /Z "файл_или_папка" \\%%0\C$
Автор: Accessor
Дата сообщения: 02.11.2010 10:17
BVV63
Вы усложнили на пустом месте. Можно проще :
for /f %i in (list.txt) do copy ...
Автор: vitaliy91
Дата сообщения: 02.11.2010 22:38
Как записать текущую букву диска или весь путь в переменную на чистом досе ?
Автор: bomzzz
Дата сообщения: 03.11.2010 05:37
он и так в переменной сидит

Цитата:

@ECHO OFF
COLOR 9F
CLS
echo %0
echo %~d0
echo %~dp0
pause
Автор: wolf0425
Дата сообщения: 03.11.2010 08:48
bomzzz, ты на что отвечаешь?
%~d0 не является буквой текущего диска и не работает в чистом досе.
Автор: bomzzz
Дата сообщения: 03.11.2010 08:58
не сообразил что значит чистый дос. возьми не чистый дос
Автор: wolf0425
Дата сообщения: 03.11.2010 14:58

Цитата:
не сообразил что значит чистый дос
это значит просто дос - без виндов и без например 4dos.
С дискетки такой грузится...
Автор: Accessor
Дата сообщения: 03.11.2010 15:08
wolf0425
Цитата:
С дискетки такой грузится...

А у меня с флешки
Автор: bomzzz
Дата сообщения: 03.11.2010 15:10
у доса мало возможностей в батниках или пиши утилиты дополнительные или возьми 4dos
Автор: 01MDM
Дата сообщения: 03.11.2010 20:25
Accessor
Блин, если посмотришь батники "того" времени, то становится жалко . Этож надо так извращться, все через временные файлы, какие-то недокументированные баги, совсем другой алгоритм мысли.
Автор: wolf0425
Дата сообщения: 03.11.2010 21:56
bomzzz, ты опять недочитал - что просил человек?
1. нужен был не каталог хранения запускаемого батник или приблуды, а рабочий диск/каталог батника. совпадать они могут, но нечасто.
2. нужны они не в файле, а в переменной.

в файл, кстати, текущий каталог запихивается и без приблуд: cd>file.txt
а вот со способом вытащить что-то из файла и запихнуть в переменную - в голом досе что-то ничего в голову не приходит.
Автор: bomzzz
Дата сообщения: 03.11.2010 22:11
это переменная %0. а что ему надо мы и не знаем
Автор: wolf0425
Дата сообщения: 03.11.2010 22:30

Цитата:
а что ему надо мы и не знаем
ну если априори считать что он просил не то что ему надо - то не знаем. а вообще -
Цитата:
Как записать текущую букву диска или весь путь в переменную на чистом досе ?
Автор: bomzzz
Дата сообщения: 03.11.2010 22:36
ну и что. а я ему отвечаю что в досе батники не имеют тех возможностей что под виндой и советую ему сипользовать 4дос или делать свои утилиты
Автор: Accessor
Дата сообщения: 03.11.2010 22:59
bomzzz
Цитата:
Accessor
MYNAME.COM 44 байт (44 байт)

Не понял, к чему это?
Автор: bomzzz
Дата сообщения: 03.11.2010 23:22
раз не понял значит тебе этого не надо
Автор: yurkesha
Дата сообщения: 04.11.2010 00:27
wolf0425
Цитата:
рабочий диск/каталог батника
А через call temp.bat %CD%?
А внутри уже %1...


Добавлено:
Нет не выйдет... %CD% в чистом досе нет
Автор: deIfin
Дата сообщения: 04.11.2010 04:03
Помогите решить задачку: Есть несколько тысяч архивов, по несколько, каждый в своем подкаталоге. Задача распаковать их в эти подкаталоги, при этом после распаковки каждого файла его нужно сразу удалить, т.к. место на диске ограничено.

Я хотел сделать так:

Код: for /r %%i in (*.zip) do "c:\Program Files\WinRAR\winrar.exe" e "%%i" "%%~pi" && for /r %%i in (*.zip) do del /F "%%i" "%%~pI"
Автор: Rush
Дата сообщения: 04.11.2010 04:39
deIfin

Код:
for /r "нужная папка" %%i in (*.zip) do "c:\Program Files\WinRAR\winrar.exe" e "%%i" "%%~pi" && del /f /q "%%i"
Автор: smirnvlad
Дата сообщения: 04.11.2010 06:35
vitaliy91

Цитата:
как записать текущую букву диска или весь путь в переменную на чистом досе ?

для англоговорящего доса
[more]
Код: [no]
echo.set cd=%%3>%temp%\enter.bat

cd > %temp%\enter.!!!
echo. >> %temp%\enter.!!!

type %temp%\enter.!!! | time | find ":\" > %temp%\enter1.bat
call %temp%\enter1.bat
echo %cd%
[/no]
Автор: Brother_Micro
Дата сообщения: 04.11.2010 12:23
Подскажите, пожалуйста, как из командной строки проверить язык операционной системы и номер SP (в winxp).
Автор: deIfin
Дата сообщения: 04.11.2010 12:31
Rush Вот спасибо!! Только никак не пойму почему это работает? Моя конструкция - это часть батника, где предыдущей строкой идет смена текущего каталога (cd /D "нужная папка"), т.е. цикл FOR запускается уже из нужной папки, а судя по FOR/? Если после ключа /R не указано имя каталога,выполнение команды начинается с текущего каталога.
Автор: Rush
Дата сообщения: 04.11.2010 13:21
deIfin
Дело не в том, что я приписал папку к фору. Дело в другом. Что делает твой цикл?
Он получает первый архив для обработки, потом его распаковывает винрар и, в случае успешного действия, запускается новый цикл, который удаляет последовательно все файлы зип из этого и вложенных каталогов. Потом снова срабатывает первый цикл и пытается получить второй архив. Но, поскольку ты их уже все удалил вторым циклом, на этом первый цикл завершает работу. В итоге: остается только первый распакованный файл.
Если. как ты говоришь, взять первый цикл в кавычки, то ты отделяешь первый цикл от второго. И второй запускается после полной отработки первого. Поэтому сперва все извлекается, потом все удаляется.
А в моем примере архив распакуется и тут же после этого удалится.
Автор: 01MDM
Дата сообщения: 04.11.2010 13:45
Brother_Micro
кроме XP Home:

Код:
systeminfo
Автор: Brother_Micro
Дата сообщения: 04.11.2010 14:35
01MDM
Ага... а как это дальше-то использовать?
Если SP3, то сделать одно, если SP2, то другое.
Автор: 01MDM
Дата сообщения: 04.11.2010 14:52
Brother_Micro


Код:
@echo off

2>nul (

systeminfo | 1>nul findstr /c:"Service Pack 3" && (
    
    echo SP3
    echo doing something
    goto:eof

)

systeminfo | 1>nul findstr /c:"Service Pack 2" && (

    echo SP2
    echo doing something more

)
)
Автор: Rush
Дата сообщения: 04.11.2010 15:01
Brother_Micro
еще способ:

Код:
@echo off

for /f "tokens=1-3" %%a in ('wmic path win32_operatingsystem get
oslanguage^,servicepackmajorversion^,version'
) do (
set OSLanguage=%%a
set ServicePack=%%b
set WindowsVersion=%%c
)

@echo Windows Version - %WindowsVersion%
@echo Service Pack - %ServicePack%
@echo OS Language - %OSLanguage%

pause
Автор: Brother_Micro
Дата сообщения: 04.11.2010 16:16
Rush
01MDM
Спасибо!
Автор: Accessor
Дата сообщения: 04.11.2010 18:42
bomzzz
Цитата:
раз не понял значит тебе этого не надо
Ты статус "набиваешь" своими бессмысленными постами?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.