Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Управление из командной строки


Рекомендуемые сообщения

  • Ответов 589
  • Создана
  • Последний ответ

Топ авторов темы

Как подсчитать количество файлов в папке?... (получить надо только число)

...

надо из командной строки... dir не подходит, потому что выводится еще и список всех файлов

Lastern: не знаю, чем тебе так не угодила эта команда, но с ее помощью все делается на ура:

setlocal enabledelayedexpansionecho offset ddd= & for %%i in ("полный_путь_к__нужной_папке\*.*") do set /a ddd=!ddd!+1echo !ddd!
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...

Приветствую всех!

У меня возникла проблема с добавлением значений в реестр из bat-файла.

Ситуация следующая - для игры в WarCraft3 на серверах нужно в реестре прописать значения типом "REG_MULTI_SZ". При просмотре значения в стандартном "REGEDIT" я вижу строчные значения:

100101war3.alkar.net-1Alkar Teleport Warcraft 3 server

При экспорте нужного значения в REG-файле следующее:

REGEDIT4[HKEY_CURRENT_USER\Software\Blizzard Entertainment][HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III]"Battle.net Gateways"=hex(7):31,30,30,31,00,30,31,00,77,61,72,33,2e,61,6c,6b,\ 61,72,2e,6e,65,74,00,2d,31,00,41,6c,6b,61,72,20,54,65,6c,65,70,6f,72,74,20,\ 57,61,72,63,72,61,66,74,20,33,20,73,65,72,76,65,72,00,00

Пытаюсь всячески добавить ту же информацию в реестр при помощи созданного BAT-файла, но вместо строк получаю набор этих же цифр:

REG ADD "HKCU\Software\Blizzard Entertainment\Warcraft III" /v "Battle.net Gateways" /t REG_MULTI_SZ /d "31,00,30,00,30,00,31,00,00,00,30,00,31,00,00,00,\77,00,61,00,72,00,33,00,2e,00,61,00,6c,00,6b,00,61,00,72,00,2e,00,6e,00,65,\00,74,00,00,00,2d,00,31,00,00,00,41,00,6c,00,6b,00,61,00,72,00,20,00,54,00,\65,00,6c,00,65,00,70,00,6f,00,72,00,74,00,20,00,57,00,61,00,72,00,63,00,72,\00,61,00,66,00,74,00,20,00,33,00,20,00,73,00,65,00,72,00,76,00,65,00,72,00,\00,00,00,00" /f

Убирал "/", вставлял ключ с разделителем "/S ,", пробовал вообще слитно. Ничего не понимаю, к сожалению. В интернете, если честно, не смог найти внятного про строчные параметры.

У кого-то есть мысли, как воплотить задуманное в код? :)

Ссылка на комментарий
Поделиться на другие сайты

как воплотить задуманное?
REG ADD "HKCU\Software\Blizzard Entertainment\Warcraft III" /v "Battle.net Gateways" /t REG_MULTI_SZ /d "1001\001\0war3.alkar.net\0-1\0Alkar Teleport Warcraft 3 server\0" /f

\0 - это разделитель строк (признак окончания строки)

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

И снова здравствуйте!

У меня очередная проблема, с которой борюсь почти 2 недели с переменным успехом...

Есть необходимость архивации при помощи 7-zip определённых папок из сети - это базы данных (БД) 1С. В принципе, всё работает, архивы создаются именно так, как нужно, за исключением одного досадного момента - некоторые из этих файлов заблокированы процессом. Дело в том, что не все юзеры выключают 1С, к тому же происходит обмен данными с другими БД на нескольких серверах, поэтому отключать процессы 1С на тех серверах - тоже не резон.

Есть служба Windows VSS (Volume Shadow Copy Service), но я, честно говоря, не знаю, как её прикрутить вместе с 7-zip...

Ниже приведу пример одной из строк архивации:

"C:\Program Files\7-Zip\7z.exe" a -t7z -mx7 "W:\AdminSettings\backup\1C_Archive\buch\1C_BUCH_%MYDATE%_%local_time%.7z" "\\Pdc-new\hamaliadb\Buch\"

Для некоторых файлов появляется следующее сообщение:

\\Pdc-new\hamaliadb\Buch\1SACCS.DBF : Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

Собственно, может ли кто-то подсказать, как эти файлы всё же заархивировать?

Ссылка на комментарий
Поделиться на другие сайты

У меня очередная проблема, с которой борюсь почти 2 недели с переменным успехом...

Немного не понял, что именно требуется, поэтому уточню. Нужно заархивировароть файлы, которые находятся в залоченном состоянии? Файлов, которые используются программой на момент архивирования?

Скип, пропуск таких файлов не годится?

Ссылка на комментарий
Поделиться на другие сайты

Немного не понял, что именно требуется, поэтому уточню. Нужно заархивировароть файлы, которые находятся в залоченном состоянии? Файлов, которые используются программой на момент архивирования?

Скип, пропуск таких файлов не годится?

Прошу простить, если непонятно изложил...

Мне необходимо заархивировать файлы, которые используются программой на момент архивирования. Пропуск этих файлов крайне нежелателен.

Ссылка на комментарий
Поделиться на другие сайты

Мне необходимо заархивировать файлы, которые используются программой на момент архивирования. Пропуск этих файлов крайне нежелателен.

Теперь точно понял. А если попробовать их скопировать сначала в какое-нибудь другое место и архивировать уже оттуда?

Возможно и копироваться не будут. Надо попробовать.

Если не будут копироваться, то боюсь, что командными программами с обычными правами этого не сделать. Нужна не юзер-модная программа, а что-нибудь с драйвером например, чтобы был доступ ниже. А так будет приоритетнее тот, кто использует.

Ссылка на комментарий
Поделиться на другие сайты

Теперь точно понял. А если попробовать их скопировать сначала в какое-нибудь другое место и архивировать уже оттуда?

Возможно и копироваться не будут. Надо попробовать.

Если не будут копироваться, то боюсь, что командными программами с обычными правами этого не сделать. Нужна не юзер-модная программа, а что-нибудь с драйвером например, чтобы был доступ ниже. А так будет приоритетнее тот, кто использует.

Спасибо за совет - действительно уже начал подумывать над предварительным копированием...

Вот только время архивирования вырастет раза в два, пожалуй. Там большие объёмы (общий объём копируемых фалов около 30 Гб) и само архивирование занимает в среднем 3 часа (+/- 10 минут). :(

А по поводу программы - не имею предрассудков, просто люблю командную строку. Пробовал архивировать Comodo Backup, вот только последняя на данный момент версия 3.0171317.133 не понимает кириллицу в названиях папок/фалов и пишет вместо них бред. Кстати, у Комодо очень хорошо получилось заархивировать "занятый" файл.

P.S. Я просмотрел некоторое количество программ, отдаю предпочтение бесплатным вариантам. Вот только большинство лишь копирует. А если архивы делает (тот же Комодо) - получается архивы в 2,5 раз больше, чем при архивировании в 7-zip (это, кстати, ещё один плюс для 7z).

Ссылка на комментарий
Поделиться на другие сайты

Кстати, у Комодо очень хорошо получилось заархивировать "занятый" файл.

Да, это вот как раз потому что у Comodo Backup есть драйвер, который позволяет это делать.

bdisk.sys, C.O.M.O.D.O. Disk Raw Access Filter, прямо в его описание и написано, что он как раз для прямого доступа к файлам.

Тут дело не в 7-zip, а в том, что юзер-модным приложениям Windows просто не дает трогать обычными способами файлы, которые открыты на эксклюзивный доступ. Мне кажется что и скопировать не даст, но всё зависит от того как именно используются файлы 1SACCS.DBF. Если они открыты на эксклюзивный доступ, то только программой с драйвером, либо какой-то специфичной программой, которая специально позаботилась о таких ситуациях.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Похоже, решил эту проблему. Более детально прочёл мануалку к 7z и нашёл там параметр -ssw. Этот параметр как раз архивирует "занятые" файлы. Описание ниже:

-ssw (Compress files open for writing) switch

Compresses files open for writing by another applications. If this switch is not set, 7-zip doesn't include such files to archive.

Syntax

-ssw

Example

7z a archive.7z -ssw *.txt

compresses all *.txt files in current folder including files open for writing by another applications.

Посмотрю завтра по логам архивирования на результат...

Обновлено:

Ура! Работает!!! Просто добавить ключ "-ssw" и будет счастье!

Изменено пользователем Leon-Killer22
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Более детально прочёл мануалку к 7z и нашёл там параметр -ssw. Этот параметр как раз архивирует "занятые" файлы.

Но вот видите, значит товарищи позаботились о таких ситуациях. Молодцы. :)

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

всем привет) кто-нибудь может помочь написать код в командной строке, который по названию файла и диска, на котором он лежит, находил этот файл и выводил его на экран (txt-файл)

Ссылка на комментарий
Поделиться на другие сайты

я не знаю точно директорию где находится файл, я знаю только диск

батник должен искать по диску и запускать файл, если найдет

Ссылка на комментарий
Поделиться на другие сайты

 forfiles /p %1 /s /m %2 /c "cmd /c type @file"

Где %1 - имя диска, %2 - имя файла.

Файл forfiles.exe поместить в папку \Windows\

forfiles.rar

forfiles.rar

Изменено пользователем DJFlint
Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Всем доброго дня, недавно созрела небольшая проблема. Дело в том, что я держу серверы по Minecraft и LineAge II в локальной сети. После запуска компьютера и серверов процессор достигает загрузки 100% где-то через трое суток работы. В .bat не шарю, потому и прошу помощи. Нужно:

1. создать таймер, который через 24 часа после начала отсчета выполнит команду 2;

2. влезть в уже запущенный батник minecraft-сервера (работает на Java), написать там команду "stop", дабы сервер отключился;

3. перезагрузить компьютер.

Возможно ли воплотить все это в жизнь?)

Ссылка на комментарий
Поделиться на другие сайты

Всем доброго дня, недавно созрела небольшая проблема. Дело в том, что я держу серверы по Minecraft и LineAge II в локальной сети. После запуска компьютера и серверов процессор достигает загрузки 100% где-то через трое суток работы. В .bat не шарю, потому и прошу помощи. Нужно:

1. создать таймер, который через 24 часа после начала отсчета выполнит команду 2;

2. влезть в уже запущенный батник minecraft-сервера (работает на Java), написать там команду "stop", дабы сервер отключился;

3. перезагрузить компьютер.

Возможно ли воплотить все это в жизнь?)

1 и 3 да, а 2 нет, т.е. средствами bat-файла (без извращений)
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Доброго времени суток!

Есть необходимость на машине с ОС Виндоус заархивировать все файлы в папке отдельным архивом при помощи программы 7-ZIP из командной строки (BAT-файл).

Сама команда архивирования имеется, вот только как заставить её архивировать всё по отдельности, а не скопом?

Спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Предположим, файлы в папке D:\1

тогда строка в батнике

FOR /D %%f IN (D:\1\*.*) DO 7z.exe a %%f.7z %%f

Упакует субкаталоги в этой папке в отдельные архивы

/D - это ключ для цикла, а не диск.

Без ключа упакует файлы, каждый в свой архив.

FOR %%f IN (D:\1\*.*) DO 7z.exe a %%f.7z %%f
Изменено пользователем Teddy_Bear
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Предположим, файлы в папке D:\1

тогда строка в батнике

FOR /D %%f IN (D:\1\*.*) DO 7z.exe a %%f.7z %%f

Упакует субкаталоги в этой папке в отдельные архивы

/D - это ключ для цикла, а не диск.

Без ключа упакует файлы, каждый в свой архив.

FOR %%f IN (D:\1\*.*) DO 7z.exe a %%f.7z %%f

Спасибо огромное! Получилось!

Что такое "архивировать по отдельности, а не скопом" ?

Имеется в виду архивация каждого файла в отдельный архив, а не все файлы в один архив.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
dir /a:-d /b > list.txt

bat-файл с данной строкой создает текстовый документ listdir той директории, в которой он находится.

Составление списка файлов происходит по алфавиту.

Возможно ли изменить порядок сортировки, например, изменение по времени?

Ссылка на комментарий
Поделиться на другие сайты

/o [[:]порядок_сортировки]

Управление порядком сортировки и вывода имен файлов и каталогов командой dir. Если параметр /o, не задан, команда dir выводит имена в том порядке, в котором они записаны в каталоге. Если параметр /o использован без параметра порядок_сортировки, команда dir выводит имена каталогов в алфавитном порядке, затем — имена файлов в алфавитном порядке. Двоеточие является необязательным. Ниже приведен список значений, которые могут быть использованы при задании параметра порядок_сортировки. Допускается использование любого их сочетания без пробелов между ними.

-n

Сортировка по именам в алфавитном порядке

-e

Сортировка по расширениям в алфавитном порядке

-d

Сортировка по дате и времени от ранних к поздним

-s

Сортировка по размеру от меньших к большим

-g

Сортировка с группированием каталогов перед файлами

-n

Сортировка по именам в обратном алфавитном порядке (от Z к A)

-e

Сортировка по расширению в обратном алфавитном порядке (от .ZZZ к .AAA)

-d

Сортировка по дате и времени от поздних к ранним

-s

Сортировка по размеру от больших к меньшим

-g

Сортировка с группировкой каталогов после файлов

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...