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

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

Автор: superman md
Дата сообщения: 18.12.2010 12:03
Помогите сделать батник. SetupComplete.cmd для автоматизации ввода серийника в Windows 7.

Нужно примерно такое-
Если установлена Максимальная - cscript %windir%\system32\slmgr.vbs -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX (OEM ключ для максимальной)
Если установлена Профессиональная - cscript %windir%\system32\slmgr.vbs -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX (OEM ключ для профессиональной)
ну что то такое, для меня батники это тёмный лес. Может кто то сможет решить проблему...
Автор: VitGT
Дата сообщения: 18.12.2010 15:18

Цитата:
Есть такая команда которая копирует папку содержащую в конце имени P

Код:
set SDIRV=d:\2
set DDIRV=d:\1

for /d %%i in ("%SDIRV%\*P") do xcopy /s "%%i" "%DDIRV%\"

А если папка скрытая (системная) как теперь с нее всё скопировать ?
Автор: bomzzz
Дата сообщения: 18.12.2010 15:24
у copy ключи для копирования системный файлов, у xcopy возможно тоже не помню точно

xcopy /?

можно атрибуты сменить у копируемого объекта а потом назад поставить
Автор: VitGT
Дата сообщения: 18.12.2010 15:53

Код: for /d %%i in ("d:\2\*P") do xcopy /s /y /h "%%i" "d:\1"
Автор: sisss
Дата сообщения: 18.12.2010 16:23
Доброе время суток, В папке Test 2 файла:
- 1.bat
- "папка 1"
1.bat Должен запустить ещё 1 батник из "папка 1", который содержит переменную %cd% - при её использовании указывается путь не батника в "папка 1" а путь батника который запускал всё это дело, то есть 1.bat. Как сделать так что бы учитывался путь батника из "папка 1"? Долго думал как написать эту чушь надеюсь вы поймёте.
Автор: Free_Soft
Дата сообщения: 18.12.2010 16:30
superman md

Цитата:
для автоматизации ввода серийника в Windows 7


Код: REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | findstr /i ULTIMATE >nul
IF NOT ERRORLEVEL 1 cscript %windir%\system32\slmgr.vbs -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | findstr /i PROFESSIONAL >nul
IF NOT ERRORLEVEL 1 cscript %windir%\system32\slmgr.vbs -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Автор: 01MDM
Дата сообщения: 18.12.2010 16:42
VitGT,

Цитата:
Добавил атрибут /h, файлы не копируются

И не будут, т.к. цикл 'for /d' не видит этих файлов.

Код:
for /f "tokens=*" %%i in ('dir /b /ad "d:\2\*P"') do xcopy /e "%%~fi" "d:\1\"
Автор: VitGT
Дата сообщения: 18.12.2010 21:56
01MDM,

Цитата:
И не будут, т.к. цикл 'for /d' не видит этих файлов.

Код:

for /f "tokens=*" %%i in ('dir /b /ad "d:\2\*P"') do xcopy /e "%%~fi" "d:\1\"

Тоже не работает, даже если папка не скрытая
Автор: 01MDM
Дата сообщения: 18.12.2010 23:13
VitGT
Попробуй так. У меня работает.

Код:
@echo off

pushd "d:\2\"
for /f "tokens=*" %%i in ('dir /b /ad ".\*P"') do xcopy /e /y "%%i" "d:\1\%%i\"
popd
Автор: VitGT
Дата сообщения: 19.12.2010 00:00
01MDM
Огромное спасибо Вам, то что нужно, всё работает как надо
Автор: zzzzz
Дата сообщения: 19.12.2010 14:35
Как удалить в текстовом файле данных строку, или две, содержащие имена полей.
Автор: sisss
Дата сообщения: 19.12.2010 15:02
Можно ли закачать фаил в интернет или сразу на другой комп через бат?
Автор: slech
Дата сообщения: 19.12.2010 17:06
sisss
wput
Автор: serg3001
Дата сообщения: 20.12.2010 18:40
есть txt файл, в котором имеются такие строки,например,
232:234234234:ABJ:452.47:
432:234234234:redf:857.00:
345:234234254:dsf:8.00:
.......
и т.д.
мне известно, что какие-то из чисел, в последней колонке, в сумме дают, наример, 460.47,
нужно среди таких строк найти слагаемые этой суммы.
Очень надеюсь на помощь.

Автор: 01MDM
Дата сообщения: 20.12.2010 18:48
serg3001
Я, например, не понял.
Автор: serg3001
Дата сообщения: 20.12.2010 19:00
01MDM, вот подробнее опишу на примере, прога посчитала мне всю сумму по числам в файле и выдала в результате 19,

13
2
1
3

ещё я сверяюсь с контрольной суммой по всем числам, она например = 14
вижу, что ошибка в первом случае произошла, результат больше на 5, теперь задача найти слагаемые из которых состоит 5 (2 и 3) и вывести их в файл допустим.
Автор: Vladins
Дата сообщения: 20.12.2010 19:59
Для резервного копирования рабочих файлов использую батник, который запускаю вручную несколько раз в течение дня:

set CURDATE=%DATE%
set CURTIME=%TIME%
set VTIME=%time:~0,-6%
set VTIME=%VTIME::=-%
if not exist "C:\Documents and Settings\_copii" md "C:\Documents and Settings\_copii"
if not exist "D:\temp" md "D:\temp"
for %%i in (*.dwg) do (
copy "%%i" "D:\temp"
"c:\Program Files\1\7Zip\7z.exe" a -t7z -mx "C:\Documents and Settings\_copii\%CURDATE:~6,4%_%CURDATE:~3,2%_%CURDATE:~0,2% %~x1%VTIME% %%~ni.7z" "D:\temp\%%~ni.dwg"
del "D:\temp\%%i"
)
exit

Как сделать чтобы копировался только последний сохраненный файл (в папке находится несколько файлов dwg, нет смысла копировать те которые не обновлялись), т. е. чтобы по последнему времени изменения выбирался только один файл?
Автор: 01MDM
Дата сообщения: 20.12.2010 19:59
serg3001
Вот набросал. При условии, что заведомо только 2 слагаемых:

Код:
@echo off
setlocal

set "toFind=460.47"
set "toFind=%toFind:.=%"

for /f "tokens=4 delims=:" %%i in (1.txt) do call:set "%%i"
for /l %%i in (1,1,%cnt%) do call:check "%%i"
goto:eof

:set
set "num=%~1"

set /a sums+=%num:.=%
set /a cnt+=1

set "n_%cnt%=%num:.=%"
goto:eof

:check
set /a n=%~1+1
for /l %%i in (%n%,1,%cnt%) do (
    
    for /f "tokens=2 delims==" %%x in ('set n_%%i') do (
        
        for /f "tokens=2 delims==" %%y in ('set n_%~1') do call:sum "%%x" "%%y"
    
    )

)
goto:eof

:sum

set "fst=%~1"
set "scd=%~2"

set /a sum=fst+scd

if %sum%==%toFind% (

echo %sums:~0,-2%.%sums:~-2%
echo %fst:~0,-2%.%fst:~-2% %scd:~0,-2%.%scd:~-2%

)
Автор: Lamman
Дата сообщения: 20.12.2010 20:10
Задача такая: батник узнаёт текущую дату, приплюсовывает к ненй неделю и записывает в файл строку в формате %date% бла-бла-бла %date%+7 дней.
Важно, что бы он при этом записывал адекватные значения дня, месяца и года (разумеется, месяц можно округлить, скажем до 30 дней).

Для обработки даты написал... нечто, вот только оно увы, не работает.
А именно, почему-то после for значения %%a, %%b, %%c недоступны.

Код:
@echo off
for /f "tokens=1,2,3 delims=." %%a in ('date /t') do (goto day)
ay
if /i %a leq 23 ((set /a a+=7) && (goto month)) else ((
set a=0) && (goto day))

:month
if /i %a leq 7 ((set /a b+=1) && (goto year)) else (
goto year)

:year
if /i %b leq 12 (goto step) else ((
set b=0) && (set /a c+=1) && (goto month))

:step
@echo %a %b %c
Автор: wolf0425
Дата сообщения: 21.12.2010 07:18

Цитата:
А именно, почему-то после for значения %%a, %%b, %%c недоступны.
потому что они определены только внутри цикла - после do

Код: for /f "tokens=1,2,3 delims=." %%a in ('date /t') do (
    set dd=%%a
    set mm=%%b
    set yy=%%c
)
Автор: res2001
Дата сообщения: 21.12.2010 08:00
Lamman
В очередной раз прорекламируюсь - постил в этой ветке батник переводящий дату/время в секунды от начала эпохи и обратно, там учитываются високосные года, дни месяца и проч.
Поищи в версии для печати, думаю для твоей задачи как раз сгодиться.
Но кода там довольно много, на vbs/js это будет все гораздо короче.

Добавлено:
Vladins
Для копирования файлов используй xcopy с параметром /M и будет тебе счастье.
Автор: DoctorAlex
Дата сообщения: 21.12.2010 11:37
Народ помогите.
Такая задача.

нужно выдернуть IP адрес локальной машины из ipconfig (127.0.0.1 не нужно, нужен статический или динамический) и подставить его в программа.exe %IP%

что то вроде

ipconfig | findstr IP
программа.exe %IP%

спасибо, решение нашол
-----------
set "ipstr="
for /f "tokens=2 delims=:" %%a in ('netsh interface ip show address ^| findstr "IP-" ') do (
for /f %%b in ("%%a") do set "ipstr=!ipstr!;%%b"
)
set "ipstr=%ipstr:~1%"
-----------
Автор: res2001
Дата сообщения: 21.12.2010 11:57
DoctorAlex
Воспользуйся поиском в версии для печати этого топика. На твой вопрос ответ проходил неоднократно.
Автор: Vladins
Дата сообщения: 21.12.2010 21:43
res2001
Можно пример для резервного копирования
Цитата:
xcopy с параметром /M
?



Добавлено:
И еще: в том же батнике (20:59 20-12-2010) формат дата время в имени файла выводится в виде 2010_12_21 8-00. А для того чтоб файлы сортировались в алфавитном порядке нужно 2010_12_21 08-00. Для этого в региональных настройках выставил формат отображения времени "без подавления нулей", часы стали отображать 08-00 вместо 8-00, а названия заархивированных файлов остались в формате 0-00. Как добавить ноль в имена файлов?
Автор: wolf0425
Дата сообщения: 22.12.2010 07:27

Цитата:
Как добавить ноль в имена файлов?
в %vtime% заменить пробел на 0

ну и какие у тебя проблемы переставить части %curdate% как тебе надо - мне не понять...
Автор: res2001
Дата сообщения: 22.12.2010 07:56
Vladins

Цитата:
Можно пример для резервного копирования

Дык заменяешь в батнике copy на xcopy /m вот и все. Какой тебе пример еще нужен?
Почтиай xcopy /?.
Суть в том что ключ /m указывает xcopy копировать файлы с установленным атрибутом "архивный" и после копирования сбрасывать его. Когда файл изменяется, этот атрибут автоматически устанавливается, таким образом получаешь копирование только измененных файлов.
Автор: Vladins
Дата сообщения: 22.12.2010 18:03
res2001
Работает, однако если файл не изменялся, то копирование не происходит, а нужно чтобы копирование происходило в любом случае. Есть ли еще методы выбора файлов по дате?
Автор: king_stiven
Дата сообщения: 22.12.2010 18:58
Vladins
Цитата:
чтобы по последнему времени изменения выбирался только один файл?

dir /O:-D /T:W /a:-d /b
начни с этого
Автор: Vladins
Дата сообщения: 22.12.2010 21:24
king_stiven
Получил список файлов с помощью dir /O:D /T:W /a:-d /b *.dwg
А как сделать какие либо операции (копирование или архивирование) с последним (или первым) файлом из списка?
Автор: king_stiven
Дата сообщения: 22.12.2010 23:14
...
if not exist "D:\temp" md "D:\temp"
for /f "delims=" %%i in ('dir /O:D /T:W /a:-d /b *.dwg') do (
copy "%%i" "D:\temp"
"c:\Program Files\1\7Zip\7z.exe" a -t7z -mx "C:\Documents and Settings\_copii\%CURDATE:~6,4%_%CURDATE:~3,2%_%CURDATE:~0,2% %~x1%VTIME% %%~ni.7z" "D:\temp\%%~ni.dwg"
del "D:\temp\%%i"
exit
)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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