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

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

Автор: AntonioP
Дата сообщения: 17.12.2010 04:10
Плиз, помогите. Не могу решить проблему с помощью батника.
Задача простая - удалить файлы размером = 0 из конкретной папки.
Автор: BVV63
Дата сообщения: 17.12.2010 04:19
AntonioP
Аналогичная задача была на предыдущей странице. Ну, чуть подправил для Вашего случая ответ res2001:

Код: for %%a in (*.*) do if %%~za equ 0 del /q/f %%a
Автор: AntonioP
Дата сообщения: 17.12.2010 04:49

Цитата:
Ну, чуть подправил для Вашего случая ответ res2001:

Спасибо)

я решил таки так

for /F "skip=4 tokens=3,4" %%a in ('dir %1 /A:-D /-C /N') do (if %%a==0 del /f /s /q %%b)
Автор: Rush
Дата сообщения: 17.12.2010 06:53
vbrv
можно так:

Код: setlocal enabledelayedexpansion
for /L %%i in (0,20,100) do (
set /a j=%%i+20
echo %%i !j!
)
Автор: res2001
Дата сообщения: 17.12.2010 08:04
lorents

Цитата:
Как сделать, если пользователь ввел число отличное от 1 до 8, то код игнорирует данное значение, а не повторяет свой запрос еще раз?

В этой строке:
echo Вы указали неправильное значение параметра оптимизации картинок. && goto:loop1
убери && goto:loop1

Ты столько времени пишешь свой оптимизатор, что уже пора такие вещи знать.
Автор: bomzzz
Дата сообщения: 17.12.2010 08:10
натренируется со временем. может надо попробовать алгоритмы программ делать сначала, чтоб потренироваться какие узоры можно плести из составляющих. уже непомню как в школе это дело преподавали
Автор: lorents
Дата сообщения: 17.12.2010 08:42
res2001
Я не правильно выразился, мне надо, если пользователь ввел число отличное от 1 до 8, то код продолжает требовать значение параметра, но чтобы не повторял весь запрос с начало?
Автор: res2001
Дата сообщения: 17.12.2010 08:52
lorents
Тогда метку :loop1 поставь перед строкой set /p png=...

Добавлено:
для верности еще и строку set png= перемести между меткой и set /p png=...

Добавлено:
ну кароче так:

Код: ...
:loop1
set png=
set /p png="Укажите параметр оптимизации PNG и нажмите на Enter: "
...
Автор: lorents
Дата сообщения: 17.12.2010 09:13
res2001
Спасибо, разобрался
Автор: Rush
Дата сообщения: 17.12.2010 09:18
lorents
Кстати, можно существенно сократить код таким образом:

Код: if "%png%"=="0" set "png=9"
if defined png if "%png%" gtr "8" (
echo Вы указали неправильное значение параметра оптимизации картинок. && goto:loop1
)
Автор: res2001
Дата сообщения: 17.12.2010 09:32
Rush
У него в случае если ничего выбирать не надо юзер нажимает просто Enter, т.е. переменная остается не определенной. Тогда сократить можно так:

Код: if not defined png set "png=9"
if "%png%" gtr "8" echo Вы указали неправильное значение параметра оптимизации картинок. && goto:loop1
Автор: Rush
Дата сообщения: 17.12.2010 09:39
res2001

Цитата:
У него в случае если ничего выбирать не надо юзер нажимает просто Enter, т.е. переменная остается не определенной.

Нет, она определяется ниже:

Код: if not defined png set png=100
Автор: res2001
Дата сообщения: 17.12.2010 10:21
Rush
Вобщем да, был не прав.
Но с другой стороны, можно ввести какой-нить символ с кодом меньше "0", тогда твой вариант сокращения тоже не отработает. Надо как-то так:
if "%png%" lss "1" set "png=9"
if defined png if "%png%" gtr "8" (
echo Вы указали неправильное значение параметра оптимизации картинок. && goto:loop1
)
Автор: Rush
Дата сообщения: 17.12.2010 10:46
res2001

Цитата:
Надо как-то так

Ну вот и славно - разобрались.
Автор: lorents
Дата сообщения: 17.12.2010 12:32
Подскажите, пожалуйста, еще одну вещь

Код: find /c "яВ" %1
Автор: Rush
Дата сообщения: 17.12.2010 12:46
lorents

Код: find /c "яВ" %1>nul && echo 1 || echo 0
Автор: lorents
Дата сообщения: 17.12.2010 12:59
Rush
Благодарю. Все получилось.
Автор: FXPELIVE
Дата сообщения: 17.12.2010 14:31
Подскажите как с пакетного файла подключить сетевой диск: вся проблема с символами вроде µ

Код: net use X: "\\INTERNET_PC\d_$\µTorrent_Files\Downloads_HD"
Автор: res2001
Дата сообщения: 17.12.2010 15:12
FXPELIVE
Сделай отдельную шару на нужном каталоге и дай ей нормальное имя.
Автор: FXPELIVE
Дата сообщения: 17.12.2010 15:30
res2001
ОК!
Но почему тогда если запустить cmd и туда вставить эту-же строку диск благополучно подключается?
Автор: res2001
Дата сообщения: 17.12.2010 15:44
FXPELIVE
Возможно проблема с кодировкой.
Попробуй в начала батника вставить команду:
>nul chcp 1251
и батник сохрани в кодировке 1251
Автор: FXPELIVE
Дата сообщения: 17.12.2010 16:01
res2001
Сработало! Сетевые диски подключились
СПАСИБО ЗА ПОМОЩЬ!
Автор: sounknow
Дата сообщения: 17.12.2010 17:35
Уважаемые гуру. помогите организовать процедурку.
смысл...
при запуске бантика проверяется файл (example.txt)в нём число например 1 при каждом последующем запуске число увеличивается на +1 и при достижении например 100 выполняет какие либо действия
например echo ok
заранее спасибо! надеюсь на вашу помощь желательно команды описать
Автор: 01MDM
Дата сообщения: 17.12.2010 20:21
sounknow

Код: @echo off
setlocal

set /p num=<example.txt

set /a num+=1
1>example.txt echo %num%

if %num% geq 100 echo ok
Автор: abz
Дата сообщения: 17.12.2010 22:27
Скажите, как из командной строки запустить ждущий (не спящий!) режим на win7? Это вообще возможно? Shutdown.exe позволяет использовать только спящий режим!

Добавлено:
rundll32 kernel32,SetSystemPowerState срабатывает только через Пуск - Выполнить. Из cmd и bat файла не работает!
Автор: sounknow
Дата сообщения: 17.12.2010 23:45
01MDM
спасибо то что надо.
Автор: Eugeny_S
Дата сообщения: 17.12.2010 23:47
win7 использует гибридный спящий режим. Попробуй его отключить в панели управления.
Автор: 01MDM
Дата сообщения: 18.12.2010 00:08
abz
На 7-ке не могу проверить, а в XP похоже не работает. Попробуй (за точность синтаксиса не отвечаю):

Код:
wmic path win32_ComputerSystem call /?:full
wmic path win32_ComputerSystem call SetPowerState PowerState=3 Time=0
Автор: abz
Дата сообщения: 18.12.2010 01:15
Eugeny_S

Цитата:
win7 использует гибридный спящий режим. Попробуй его отключить в панели управления.

Разумеется он отключён!


01MDM

Цитата:
На 7-ке не могу проверить, а в XP похоже не работает. Попробуй (за точность синтаксиса не отвечаю):

Код:
wmic path win32_ComputerSystem call /?:full
wmic path win32_ComputerSystem call SetPowerState PowerState=3 Time=0


Или PowerShell:

Код:
(Get-WmiObject -class Win32_ComputerSystem).SetPowerState(3,"0")

Первый вариант выводит это:

Код: C:\>wmic path win32_ComputerSystem call /?:full

Method execution operations.
USAGE:

CALL <method name> [<actual paramlist>]
NOTE: <actual paramlist> ::= <actual param> | <actual param>, <actual paramlist
>

The following verb(s)/method(s) are available:

Call [ In/Out ]Params&type Status
==== ===================== ======
JoinDomainOrWorkgroup [IN ]AccountOU(string) Implemented

[IN ]FJoinOptions(uint32)

[IN ]Name(string)

[IN ]Password(string)

[IN ]UserName(string)

[OUT]ReturnValue(uint32)
Press any key to continue, or press the ESCAPE key to stop
Автор: Rush
Дата сообщения: 18.12.2010 03:41

Цитата:
SetPowerState

на msdn написано:

Цитата:
This method is currently not implemented by WMI


Добавлено:

Цитата:
z:\>wmic path CIM_UnitaryComputerSystem call SetPowerState
ОШИБКА:
Код = 0x80041055
Описание = Этот метод не реализован ни в одном из классов
Услуга = WMI

Вот такие пироги.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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