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

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

Автор: Maza Faka
Дата сообщения: 13.04.2007 13:07
testir

Цитата:
условие не отрабатывается при соответствии папок, почему ??


У меня всё работает, поставь после оператора "IF" параметр "/i" Он нужен для игнора регистра:

Код:
if /i not "Folder1"=="%%~nxi"
Автор: slayer120
Дата сообщения: 13.04.2007 13:12
NIKZZZZ
и этим пробовал и strings.exe - не получилось.
Не поодерживает юникод. Такие же проблемы бывают с
самбовскими шарами. Как решить не знаю.
Файл отправил по почте.
Автор: Nagual
Дата сообщения: 13.04.2007 13:52
NIKZZZZ
флешка делается загрузочной из менеджера дисков diskmgmt.msc
это достаточно сделать один раз, так что качать спец утилы смысла не вижу
ну а если интересно, то можно и сюда сходить
Автор: igor_andreev
Дата сообщения: 13.04.2007 13:52
slayer120
А пробовал запускать cmd.exe с параметром /U ? Тоже не реагирует?
Автор: testir
Дата сообщения: 13.04.2007 14:16
Maza Faka

удаляет все папки с именем "11.04.2007" (
поидее должен пропускать папку fujic но и из неё все удаляет, пробовал уже и на 2000 винде и на xp все тоже самое, запускаю только этот код,
как у тебя он работает, пропускает заданную папку и не удаляет от туда ничего ?

setlocal enabledelayedexpansion
for /R d:\temp\ %%i in (.) do (
if /I not "fujic"=="%%~nxi" (
if "%%~nxi"=="11.04.2007" (
rd /s /q "%%i"
)
)
)
Автор: NIKZZZZ
Дата сообщения: 13.04.2007 14:16
slayer120

Цитата:
и этим пробовал

Да, в этом файле честно все русские символы заменены на "?", конвертации не подлежит. А по поводу cmd.exe с параметром /U попробовать , конечно, нужно , но вряд-ли это поможет - это не стандартная дос-команда, она выводит все своими средствами. Альтернативу искать придется.
Автор: slayer120
Дата сообщения: 13.04.2007 14:26
NIKZZZZ

Цитата:
А по поводу cmd.exe с параметром /U

И так пробовал из батника - неполучается. Может кто знает альтернативу с юникодовским выводом.
Автор: NIKZZZZ
Дата сообщения: 13.04.2007 14:56
slayer120
Только что скачал accesschk.exe более старую версию - ведет себя по другому. Попробуй, я послал ее в письме. Я к сожапению, прверить не могу.
Автор: igor_andreev
Дата сообщения: 13.04.2007 15:04
Nagual

Цитата:
флешка делается загрузочной из менеджера дисков diskmgmt.msc
это достаточно сделать один раз, так что качать спец утилы смысла не вижу

А у меня кстати в PATH hpusbf.exe живет не из-за способности загрузочный диск MS-DOS делать, мне это не надо Были просто ситуации со сбойными флэшками, которые Windows в упор уже не видит, вроде как можно и выбрасывать уже USB-шку... А тулза от HP увидела и отформатировала.


Добавлено:
slayer120
Кажись у accesschk.exe засада с русскими буквами
http://forum.sysinternals.com/forum_posts.asp?TID=9887&KW=accesschk
Автор: NIKZZZZ
Дата сообщения: 13.04.2007 15:16

Цитата:
Были просто ситуации со сбойными флэшками, которые Windows в упор уже не видит

Ну , сюда еще можно добавить не-виндовую утилиту BootIt , позволяет форматировать "невидимые" флэшки.
Автор: slayer120
Дата сообщения: 13.04.2007 15:41
NIKZZZZ

Цитата:
Попробуй

Пробовал версию 2.0 она просто где раньше ??? все пропускает,
так что не судьба
Автор: aficio
Дата сообщения: 13.04.2007 15:41
Помогите плиз решить задачу!!

Нужен скрипт.
Есть каталог с текстовыми файлами. Нужно переместить эти файлы на FTP в папку с текущей датой. ОС - Win XP.
Т.е подключаемся к ФТП, создаем папку с текущей датой, перемещаем файлы (либо копируем ).
Спасибо!!!

З.Ы. Начал делать сам но зациклился с созданием на ФТП папки с текущей датой
Автор: KapralBel
Дата сообщения: 13.04.2007 15:49
aficio
Echo %Date%
Автор: aficio
Дата сообщения: 13.04.2007 16:03
Я знаю что %date% но при этом содается на ФТП папка %date% а мне надо чтоб создавалась папка с текущей датой и туда лились файлы.
Приведу ниже что я делаю. Может это ппрояснит что я не так делаю.

файл UPLOAD.BAT

ftp -s:upload.txt
del /q c:\tmp\*.txt

файл UPLOAD.TXT

open ftp.myftp.com
login
pass
mkdir echo %date%
binary
prompt
mput c:\tmp\*.txt
quit
Автор: KapralBel
Дата сообщения: 13.04.2007 16:11
aficio

Цитата:
mkdir %date%

А если так?


Добавлено:
aficio
Вернее так
1.cmd

Код:
@Echo Off
Echo open ftp.myftp.com >upload.txt
Echo login>>upload.txt
Echo pass>>upload.txt
Echo mkdir %date%>>upload.txt
Echo binary>>upload.txt
Echo prompt>>upload.txt
Echo mput c:\tmp\*.txt>>upload.txt
Echo quit>>upload.txt

ftp -s:upload.txt
del /q c:\tmp\*.txt

Автор: aficio
Дата сообщения: 13.04.2007 16:17
Извиняюсь скрин сбросил уже исправив по Вашему совету на echo
при mkdir echo %date% - создает папку echo
при mkdir %date% - создает папку %date%

Я может не прав но может при присоединении к ФТП невозможно оперировать командами извлечения даты?
Автор: igor_andreev
Дата сообщения: 13.04.2007 16:25
aficio

Цитата:
Я может не прав но может при присоединении к ФТП невозможно оперировать командами извлечения даты?

Прав. С ftp.exe %переменные% не прокатят. Но в батнике то можно оперировать, тебе KapralBel в пример 1.cmd привел. Там еще после mkdir надо добавить Echo cd %date%>>upload.txt
Автор: aficio
Дата сообщения: 13.04.2007 16:35
ПОСЛЕ ЭТОГО

@Echo Off
Echo open ftp.myftp.com >upload.txt
Echo login>>upload.txt
Echo pass>>upload.txt
Echo mkdir %date%>>upload.txt
Echo binary>>upload.txt
Echo prompt>>upload.txt
Echo mput c:\tmp\*.txt>>upload.txt
Echo quit>>upload.txt

ftp -s:upload.txt
del /q c:\tmp\*.txt

ПАПКА создалась, но файлы были записаны просто в корень а не в нее
Автор: Elroir
Дата сообщения: 13.04.2007 16:40
testir

Цитата:
удаляет все папки с именем "11.04.2007" (
поидее должен пропускать папку fujic но и из неё все удаляет

Пробуй так:

Код:
@echo off
setlocal enabledelayedexpansion
set "folder=fujic"
set "delfold=11.04.2007"
for /R d:\temp\ %%i in (.) do (
set "skip=no"
call :checkname "%%i"
if "!skip!"=="no" (
if "%%~nxi"=="%delfold%" (rd /s /q "%%i")
)
)
goto :EOF
:checkname
for /f "tokens=1* delims=\" %%a in (%1) do (
if "%%a"=="" goto :EOF
if /i "%%a"=="%folder%" (
set "skip=yes"
goto :EOF
) else (
if not "%%b"=="" call :checkname "%%b"
)
)
Автор: aficio
Дата сообщения: 13.04.2007 16:41
ВСЕ СПАСИБО ВАМ БОЛЬШОЕ!!
Просто не обновил страницу и не увидел добавку от IGOR ANDREEV
Все работает!!
Еще раз сенкс!!
Автор: Elroir
Дата сообщения: 13.04.2007 16:43
Deleted - не увидел, что уже ответили.
Автор: Maza Faka
Дата сообщения: 13.04.2007 18:13
Elroir

Цитата:
Пробуй так:

Код:
@echo off
setlocal enabledelayedexpansion
set "folder=fujic"
set "delfold=11.04.2007"
for /R d:\temp\ %%i in (.) do (
set "skip=no"
call :checkname "%%i"
if "!skip!"=="no" (
if "%%~nxi"=="%delfold%" (rd /s /q "%%i")
)
)
goto :EOF
:checkname
for /f "tokens=1* delims=\" %%a in (%1) do (
if "%%a"=="" goto :EOF
if /i "%%a"=="%folder%" (
set "skip=yes"
goto :EOF
) else (
if not "%%b"=="" call :checkname "%%b"
)
)
Автор: NIKZZZZ
Дата сообщения: 13.04.2007 19:47
slayer120

Цитата:
А задачка нужная - найти папки, доступнуе юзеру,
разбросанные по папкам диска. Может будут какие-то мысли.


Есть еще вариант - применять утилиту к accesschk.exe к каждой папке по-отдельности и анализировать ее доступность.
Автор: mitrichbel
Дата сообщения: 13.04.2007 19:51
Здравствуйте!
У меня, кажется, тривиальная задача, но самому разобраться, к сожалению, не получается..

В общем, я чуть ли не ежедневно ношу с одного компьютера на другой на флешке почти одну и ту же информацию. Обычно этот процесс выглядит так: [more]
1. выгружаю из памяти миранду и ещё пару программ.
2. по очереди упаковываю в архивы на флешке папки с этими программами
3. упаковываю в архивы на флешке папки с другой информацией
4. на второй машине сначала проверяю, не запущены ли программы, которые я собираюсь распаковать с флешки
5. если запущены - завершаю, естественно
6. очищаю содержимое папок, которые будут заполнены в следующем шаге (понимаю, что перед этим неплохо бы протестировать архивы на флешке)
7. распаковываю каждый архив в предназначенное ему место
8. запускаю эти обновленные программы
Сейчас всё это делается руками с помощью Total Commander, отработано чуть ли не до автоматизма, но жалко тратить эти три-пять минут каждый день..
Помогите, пожалуйста, это дело автоматизировать до размеров двух bat-файлов?
Установлен WinRAR из последних, хотелось бы избежать какой-то доп. софт..[/more]
Автор: igor_andreev
Дата сообщения: 13.04.2007 20:05
Elroir
Maza Faka
А я б задачу камрада testir решал вообще без всяких IF, CD, XCOPY...
Сбросил бы все диск\путь\названия папок в txt
FOR /R "D:\Temp" %%A IN (.) DO ECHO "%%~fA">>ALL_FOLDERS.TXT
и
FIND /V "fujic" ALL_FOLDERS.TXT>>ДРУГОЙ.TXT
ну или там по обстановке
TYPE ALL_FOLDERS.TXT | FIND /V "fujic" | FIND /V "дата">>ДРУГОЙ.TXT
И все, что в ДРУГОЙ.TXT удалять. Кроме корневой папки конечно
Автор: InSe0F
Дата сообщения: 13.04.2007 20:18
всем привет.
у меня такая задачка.
в общем запускаю я файлик один, exe, программу тобишь.
потом мне надо сделать так чтобы командер периодически или постоянно, ну хотябы раз в 5-10 минут проверял запущена ли она, и если она не запущена запускал.

start smtn.exe
это то ясно, а как сделать дальше?
я так понимаю это что нить в духе do on exit smtn.exe....
помогите плз., очень срочно
Автор: NIKZZZZ
Дата сообщения: 13.04.2007 20:48
InSe0F


Код: :_1
tasklist | find /i "smth">nul
if not %errorlevel%==0 start smtn.exe
[пауза 5-10 мин]
goto _1
Автор: Elroir
Дата сообщения: 13.04.2007 21:08
Maza Faka

Цитата:
Не пойдёт

Прав - я не учел, что в "11.04.2007" может быть фолдер "fujic"

igor_andreev

Цитата:
А я б задачу камрада testir решал вообще без всяких IF, CD, XCOPY...


Чего-то я даже в этом направлении и не думал

Добавлено:
Testir
Приведи структуру папок, которая может быть, какие папки надо удалять, а какие нет.
Автор: InSe0F
Дата сообщения: 13.04.2007 21:40
NIKZZZZ, спс, но вот пауза с пингом совершенно не катит, особенно при таких масштабах
в обещем у меня 2 вопроса по паузе,
1) на раб столе появляется файлик sleep.vbs, но!, т.к. чаще всего он у меня (батник) будет закрываться физически то файлик не удаляется, может есть какая то команда на выполнение оперед команды перез закрытием?
2)когда прогу закрываешь, появляется такое

Код: ^CЗавершить выполнение пакетного файла [Y(да)/N(нет)]?
Автор: NIKZZZZ
Дата сообщения: 13.04.2007 22:17
InSe0F

Цитата:
1) на раб столе появляется файлик sleep.vbs, но!, т.к. чаще всего он у меня (батник) будет закрываться физически то файлик не удаляется

Так кидай его куда-нибудь в %Temp%, там и так мусора предостаточно, лишний файлик небольшого размера - можно наплевать.

Цитата:
когда прогу закрываешь, появляется такое

Так запускай батник , например через hiderun, что-бы окошко глаза не мозолило.
А закрывай прогу бакником примерно таким:

Код: taskkil hlds.bat
taskkil hlds.exe
del /q "%Temp%\sleep.vbs"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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