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

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

Автор: file13
Дата сообщения: 27.03.2009 20:12
Здравствуйте!
Подскажите пожалуйста, как с помощью bat-файла удалить все папки и под-папки из корня диска, кроме указанных? Например, нужно удалить всё кроме системных папок (Windows, Documents and settings, Program files, etc).

01MDM, спасибо, всё работает :)
Автор: 01MDM
Дата сообщения: 27.03.2009 21:34
Alex1985

Код:
move "c:\temp\list.txt" c:\%date:~-4%_%date:~3,2%_%date:~0,2%.txt
Автор: AZJIO
Дата сообщения: 28.03.2009 02:03
Подскажите, где взять справку по командам XXCOPY.EXE? Параметры /? и /help проверял, в гугле ничего не нашёл...
________________
нашёл по названию фирмы "Pixelab" мегабайтный дистрибутив (справка на англ) и ещё есть XXCOPY.EXE - 7 кб.
Автор: Rush
Дата сообщения: 28.03.2009 03:17
AZJIO
http://www.xxcopy.com/xxcopy01.htm
Автор: Alex1985
Дата сообщения: 28.03.2009 18:43
01MDM
спасибо!
Автор: Funtik_Vintik
Дата сообщения: 29.03.2009 10:31
UNHELPMAN
Дак а если на сервере папке логину Пользователя указать ТолькоЧтение, а бэкапы скриптом с АРМ кидать под другим юзером имеющим в эту папку полные права.
Как разным программам залазить на сервер с разными пользователем/паролем я в свое время толком и не понял, такчто возможно придется на каждой АРМ скрипт запускать под отдельным пользователем типа DomainScripterUser1...N
Автор: ForposT_ForeveR
Дата сообщения: 29.03.2009 19:37
Здравствуйте.
Помогите пожалуйста, написать бат файл, который бы считывал из файла название папки, создавал её и копировал содержимое c:\dir в созданную папку.
Повторял эти действия, пока не закончатся строки в файле names.txt
Заранее огромное спасибо
Автор: BorlandIMHO
Дата сообщения: 29.03.2009 23:10
ForposT_ForeveR

Код: for /f "delims=" %%N in (names.txt) do md "%%N" && xcopy "c:\dir\*" "%%N" /E /C /Q
Автор: Avilona
Дата сообщения: 29.03.2009 23:16
Привет всем!!!!! Блин, кто сможет помогите пожалуйста!
Задали программку написать по отгадыванию числа от 0 до 10. Причем если называешь число, меньшее тому которое загадал компьютер, он выдает подсказку, что "загадал меньшее число"( и соответственнно так же с наибольшим). Вообщем-то всё написала! Всё проверила по отдельности - работает! НЕ работает (Set /p input=Vvedi chislo:
Set /a a=%input% ) когда подключаешь это в цикл for. если цикл убрать все нормально! Но без цикла здесь никуда, сами понимаете!!!! может кто подскажет что сделать, чтоб с циклом работало нормально!!!!

@Echo Off
title game

set /a chislo= 0
color 06
Echo.
Echo.
Echo.
Echo Privet!!!! ya zagadal chislo ot 0 do 10...
Echo.
Set /a chislo=!random!%%10
Echo Poprobuy otgadat' zagadannoe chislo:
Echo %chislo%*****************************************
Echo.

for %%j in (0,1,10) do (
Set /p input=Vvedi chislo:
Set /a a=%input%
Echo.
If %chislo% equ %a% (
Echo Ty ugadal!!!
Echo.
pause
exit
)

If %chislo% gtr %a% (
Echo Ya zagadal chislo bolshe!!!
Echo.
)

If %chislo% lss %a% (
Echo Ya zagadal chislo menshe!!!
Echo.
)
)
pause
exit
Заранее благодарна!!!!!!!!
Автор: Nagual
Дата сообщения: 30.03.2009 00:04
Avilona
примерно [more=так]Код:
@Echo Off
setlocal enabledelayedexpansion
title game

set /a chislo=0
color 06
Echo.
Echo.
Echo.
Echo Privet!!!! ya zagadal chislo ot 0 do 10...
:begin
Echo
.
Set /a chislo=!random!%%10
Echo Poprobuy otgadat' zagadannoe chislo:
Echo %chislo%*****************************************
Echo.

for %%j in (0,1,10) do (
Set /p "a=Vvedi chislo: "
If !chislo! equ !a! (
Echo Ty ugadal!!!
Echo. Sygraem esche?
pause
goto:begin
)
)

If %chislo% gtr %a% (
Echo Ya zagadal chislo bolshe!!!
Echo.
)

If %chislo% lss %a% (
Echo Ya zagadal chislo menshe!!!
Echo.
)

Echo. Sygraem esche?
pause
goto:begin
[/more]
Автор: ForposT_ForeveR
Дата сообщения: 30.03.2009 00:36
BorlandIMHO

Спасибо огромное, всё отлично.
Автор: AZJIO
Дата сообщения: 31.03.2009 08:02
Nagual
у меня не работает... вернее не по правилам указанным Avilona
попробовал переделать, вроде заработало [more=вот]@Echo Off
setlocal enabledelayedexpansion
title game

set /a chislo=0
color 06
Echo.
Echo.
Echo.
Echo Privet!!!! ya zagadal chislo ot 0 do 10...
:begin
Echo.
Set /a chislo=!random!%%10
Echo Poprobuy otgadat' zagadannoe chislo:
Echo %chislo%*****************************************
Echo.

for %%j in (0,1,2,3,4,5,6,7,8,9,10) do (
Set /p "a=Vvedi chislo: "
If !chislo! gtr !a! (
Echo Ya zagadal chislo bolshe!!!
Echo.
)

If !chislo! lss !a! (
Echo Ya zagadal chislo menshe!!!
Echo.
)
If !chislo! equ !a! (
Echo Ty ugadal!!!
Echo. Sygraem esche?
goto:begin
)
)

Echo. Sygraem esche?
pause
goto:begin[/more]
Автор: Nagual
Дата сообщения: 31.03.2009 10:02
AZJIO
да, можно и так, только будет одна попытка на угадывание вместо трех
дело то хозяйское...
Автор: N1oNa
Дата сообщения: 31.03.2009 10:25
Всем привет! Написала скрипт, который из определенной директории выдает длину названия файлов с расширением *.xsl (по идее должен так работать, но не работает=()

@echo off
setlocal enabledelayedexpansion
for %%i in (*.xls) do (
set s=%%i
echo !s!
set /a l=0
:next
set /a l+=1
if "!s:~%l%,1!" NEQ "" goto next
set /a l-=1
echo String Lenght = !l!
)

Если я просто оставляю
@echo off
setlocal enabledelayedexpansion
for %%i in (C:\test\*.xls) do (
set s=%%i
echo !s!
)
То цикл работает нормально, но если вставляю условие внутри, то цикл выполняется только 1 раз! Помогите пожалуйста решить эту задачу)

Автор: 01MDM
Дата сообщения: 31.03.2009 12:04
N1oNa

Вместе с точкой? На примере ярлыков:

Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b *.lnk') do call:1 "%%i"
goto:eof

:1
set "nameext=%~1"
set cnt=0

:count
set /a cnt-=1
if not !nameext:~%cnt%!==%nameext% (goto:count) else (echo %cnt:~1% %nameext%)
Автор: N1oNa
Дата сообщения: 31.03.2009 12:12
01MDM, Спасибо! До такого бы я не додумалась сама! Слушай, а почему в моем варианте цикл выполнялся только 1 раз? Может потому что нельзя условие внутрь цикла вставлять?
Автор: 01MDM
Дата сообщения: 31.03.2009 12:33
N1oNa
Mне не нравится условие, в котором "setlocal enabledelayedexpansion" не обрабатываeт переменную %l%.


Цитата:
if "!s:~%l%,1!"

Автор: wolf0425
Дата сообщения: 31.03.2009 19:03

Цитата:
Mне не нравится условие, в котором "setlocal enabledelayedexpansion" не обрабатываeт переменную %l%.

там проблема не собственно с условием а с тем что внутри for ... do () переменные вида %var% подставляются один раз, в момент старта for - т.е. хотя (set /a l+=1) там работает но
( set /a l+=1
echo %l%
) напечатает стартовое значение переменной.

лечится выносом тела в подпрограмму, правильно...


Автор: 01MDM
Дата сообщения: 31.03.2009 19:08
wolf0425
Само собой, за пределами цикла все будет работать. Вопрос и был:

Цитата:
То цикл работает нормально, но если вставляю условие внутри, то цикл выполняется только 1 раз!


Автор: metrim
Дата сообщения: 01.04.2009 00:22

Цитата:
Да, именно так. Сначала создается файл со всеми возможными ссылками (all_range.txt), потом создается файл с тем, что уже есть на диске (local.txt), а потом в файл download.txt записываются все ссылки из первого файла, которые не содержат названий файлов из pre.txt и из local.txt.
Большое спасибо за консультацию
Пока руки не дошли потестить особо. но вроде как работает

Токма у меня еще вопросец в дополнение нарисовался: А нет ли какой нить легкой шустрой програмки (может и для cmd) для закачки по списку?
Просто например Флешгет как то уж очень напряжно качает, а со списком больше 30000 - просто валится.
Нужна простейшая файлокачалка, может что бы в несколько потоков качала, но не обязательно. Файлы отчсутствующие на сервере сервер отдает как no_file.jpg, так что прога должна уметь обрабатывать редирект на них, а может и просто не качать соответствующие файлы.

Итак: нужна легкая шустрая прога для закачки по списку. По БОЛЬШОМУ списку

Автор: Mr_Hat
Дата сообщения: 01.04.2009 00:32
Нужна помощь в решении задачи

Проверка наличия папок 1 и 2 в заданом каталоге
если любая из проверяемых папок существует запустить 3ю програму,
если не существует ни одной запустить 4ю програму.
Автор: Nagual
Дата сообщения: 01.04.2009 01:32
Mr_Hat
вариантов решения полно
если не учитывать вложенные каталоги, то можно попробовать так
Код:
if exist dir1 set fl=yes
if not defined fl if exist dir2 set fl=yes
if defined fl (echo run1) else echo run2
Автор: 01MDM
Дата сообщения: 01.04.2009 08:05
metrim

Цитата:
А нет ли какой нить легкой шустрой програмки (может и для cmd) для закачки по списку?

wget
http://forum.ru-board.com/topic.cgi?forum=5&topic=10066&glp
Автор: K_AHTOH
Дата сообщения: 01.04.2009 10:11
Уважаемые подскажите!

%~t1 - разворачивает %1 в дату/время создания файла

Но на самом деле если смотреть свойства файла то это получается изменение, а не создание файла.
Очень нужно чтоб было как раз создание. Как сделать?
Автор: Accessor
Дата сообщения: 01.04.2009 18:09
Народ, помогите надо в команду runas передать как имя пользователя, так и пароль. Кто знает, то штатными средствами это сделать нельзя (речть про пароль).
Придумал такую команду:
Код:
echo password|runas /user:domain\username "net use \\comp\ipc$"
Автор: 01MDM
Дата сообщения: 01.04.2009 21:11
Accessor
Этого сделать нельзя. Используй psexec вместо runas
Автор: NvvLazyTiger
Дата сообщения: 02.04.2009 05:02
K_AHTOH
Цитата:
%~t1 - разворачивает %1 в дату/время создания файла
[...]
Очень нужно чтоб было как раз создание. Как сделать?
Например так:
Код: for /f "tokens=1,2,3,*" %%a in ('dir %1 /TC /-C') do if /i "%%d" == "%1" set fCreDatTim=%%a %%b
Автор: Accessor
Дата сообщения: 02.04.2009 09:38
01MDM
Цитата:
Этого сделать нельзя. Используй psexec вместо runas

Признаться, я не понял, как мне может помочь psexec. Короче, задача изначально следующая. Нужно кратковременно залогиниться одному юзверю к другому, взять данные и отвалиться. Доступ нужен во многие каталоги, поэтому лучше подключаться с админскими правами, чтобы не заморачиваться с правами доступа и расшарками. Ну, вот и получается, что из пакетного файла надо дать команду net use \\comp\ipc$ /user:username и при этом передать пароль. Но сложность в том, что от лица рядового юзверя эту команду давать бестолку, т.к. ругается про "множественное подключение невозможно". Поэтому я придумал дать эту команду от имени администратора. Как это сделать?
Автор: NvvLazyTiger
Дата сообщения: 02.04.2009 09:51
Accessor, а что мешает использовать именно штатный net use для?
Код: O:\>net use /?
Синтаксис данной команды:
NET USE [имя_устройства | *] [\\имя_компьютера\имя_ресурса[\том] [пароль | *]] [/USER:[имя_домена\]имя_пользователя]
Автор: Accessor
Дата сообщения: 02.04.2009 10:32
NvvLazyTiger
спасибо, да, то что надо. я начал слишком глубоко копать в то время как решение на поверхности

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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