Здравствуйте, Гость ( Вход | Регистрация )

Правила | Поиск | Помощь | Участники | Репутация


Страницы: (4) 1 [2] 3 4    (К непрочитанным сообщениям) ОтветитьНовая темаНовый опрос
faq: консольные команды ос windows, консольные команды windows, к-рые помогут выполнить нек-рые задачи быстрее или их автоматизировать.
« Предыдущая тема | Следующая тема » Версия для печати
dimmslider
15 Jul 2008, 10:20  


Сейчас вне форума
Группа: Свой человек
Сообщений: 26
Репутация: нет
Регистрация: 12 Feb 08


анализ жесткого диска
есть ли такая программа, которая может определить и подробно показать насколько фрагментирован или содержит ошибки жесткий диск?

Это сообщение отредактировал(а) apostle — 20 Jul 2008, 19:59
 
 
apostle
15 Jul 2008, 15:53  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

фрагментирован:
defrag drive_letter: -a -v

defrag <volume> [-a] [-f] [-v] [-?]
volume буква диска или точки монтирования тома (d: or d:\vol\mountpoint)
-a только анализ
-f дефрагментировать, даже если не хватает свободного места на диске
-v подробный лог выполнения (в консоль)
-? вывести этот help
содержит ли ошибки:
chkdsk drive_letter: /v

CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]]


volume указать букву диска (указать ":" обязательно), точку монтирования или имя тома
filename только FAT/FAT32: указать файлы для тестирования их фрагментации
/F исправить ошибки на диске
/V FAT/FAT32: отобразить полный путь и имя каждого файла на диске
NTFS: отображать сообщения об исправлениях, если такие будут.
/R поиск поврежденных секторов и воостановление читаемой информации с них (включает в себя /F)

/L:size NTFS only: изменить р-р файла лога до указанного в кб. если р-р не указан, отобразить текущий.
/X принудительно демонтировать том, если необходимо. все открытые дескрипторы станут недействительны (включает /f).
/I NTFS only: выполняет менее требовательную в ресурсам и времени проверку индексов
/C NTFS only: Skips checking of cycles within the folder structure.

переключатели /I or /C уменьшают время требуемое для выполнения chkdsk, пропуская часть проверок тома.

ps.создать, что ли, faq по командам windows?

Это сообщение отредактировал(а) apostle — 23 Jul 2008, 18:46
 
 
Sergey_61rus
15 Jul 2008, 16:48  

Местный бездельник
Сейчас вне форума
Группа: Старожил
Сообщений: 1045
Репутация: 8
Регистрация: 29 Jan 06
Живет: ЮФО Ростовская обл. г.Таганрог

Цитата:
ps.создать, что ли, faq по командам windows?

неплохая идея, я за! Часто поиском по форуму пользуюсь так как команды наизусть не знаю… :)
 
 
apostle
20 Jul 2008, 19:39  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

Sergey_61rus
ну, что ж, поехали? =)
 
 
apostle
23 Jul 2008, 17:49  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

diskpart (описание команды — из встроенной справки windows) это консольный интерпретатор команд, к-рый позволяет управлять объектами — дисками, разделами или тоамми, — с использованием скриптов или интерактивно в интерфейсе комамнды. перед использованием команд diskpart.exe, нужно предварительно просмотреть и выбрать объект из списка для передачи ему фокуса. когда фокус передан объекту, любая команда diskpart.exe воздействует на выбранный объект.

в общем, эта команда (интерпретатор, по терминологии windows) — аналог оснастки diskmgmt.msc.
список команд diskpart:
Код:
DISKPART> ?

Microsoft DiskPart version 5.2.3790.3959

ADD         — Add a mirror to a simple volume.
ACTIVE      — Marks the current basic partition as active.
ASSIGN      — Assign a drive letter or mount point to the selected volume.
AUTOMOUNT   — Enables and disables automatic mounting of basic volumes.
BREAK       — Break a mirror set.
CLEAN       — Clear the configuration information, or all information, off the
             disk.
CONVERT     — Converts between different disk formats.
CREATE      — Create a volume or partition.
DELETE      — Delete an object.
DETAIL      — Provide details about an object.
ATTRIBUTES  — Manipulate volume attributes.
EXIT        — Exit DiskPart
EXTEND      — Extend a volume.
GPT         — Assigns attributes to the selected GPT partition.
HELP        — Prints a list of commands.
IMPORT      — Imports a disk group.
INACTIVE    — Marks the current basic partition as inactive.
LIST        — Prints out a list of objects.
ONLINE      — Online a disk that is currently marked as offline.
REM         — Does nothing. Used to comment scripts.
REMOVE      — Remove a drive letter or mount point assignment.
REPAIR      — Repairs a RAID-5 volume with a failed member.
RESCAN      — Rescan the computer looking for disks and volumes.
RETAIN      — Place a retained partition under a simple volume.
SELECT      — Move the focus to an object.


пара примеров, потом будет больше, так как функционал команды весьма обширен.

1. сперва получим список дисков в системе:
Код:
C:\WINDOWS\system32>diskpart

Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: APOSTLE

DISKPART> list disk

 Disk ###  Status      Size     Free     Dyn  Gpt
 --------  ----------  -------  -------  ---  ---
 Disk 0    Online       233 GB   745 KB   *
 Disk 1    Online       298 GB      0 B


если теперь попробовать получить, например, список разделов, будет выведено сообщение об ошибке:

Код:
DISKPART> list partition

There is no disk selected to list partitions.
Select a disk and try again.


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

Это сообщение отредактировал(а) apostle — 23 Jul 2008, 18:41
 
 
apostle
30 Aug 2008, 17:19  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

поиск текста в файлах; также можно использовать в конвейерах (вывод одной команды используется, как ввод/аргумент следующей; вывод перенаправляется оператором "|"); можно использовать регулярные выражения.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ …]]

/B поиск паттерна (pattern, строка поиска) в начале строки.
/E поиск паттерна в конце строки.
/L при поиске использовать паттерн как текст.
/R использовать паттерн, как регулярное выражение.
/S искать подходящие файлы в текущем каталоге и все подкаталогах.
/I игнорировать регистр букв (поиск case-insensitive).
/X поиск точного совпадения с паттерном.
/V поиск строк, к-рые не содержат паттерн
/N нумеровать строки вывода.
/M выводить только имя файла, если он соотвествует условиям поиска.
/O Prints character offset before each matching line.
/P Skip files with non-printable characters.
/OFF[LINE] Do not skip files with offline attribute set.
/A:attr Specifies color attribute with two hex digits. See "color /?"
/F:file Reads file list from the specified file(/ stands for console).
/C:string Uses specified string as a literal search string.
/G:file Gets search strings from the specified file(/ stands for console).
/D:dir Search a semicolon delimited list of directories
strings Text to be searched for.
[drive:][path]filename
Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C. For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y. 'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
. Wildcard: any character
* Repeat: zero or more occurrences of previous character or class
^ Line position: beginning of line
$ Line position: end of line
[class] Character class: any one character in set
[^class] Inverse class: any one character not in set
[x-y] Range: any characters within the specified range
\x Escape: literal use of metacharacter x
\<xyz Word position: beginning of word
xyz\> Word position: end of word

For full information on FINDSTR regular expressions refer to the online Command
Reference.

Это сообщение отредактировал(а) apostle — 30 Aug 2008, 17:44
 
 
ядовитый лис
12 Dec 2008, 08:48  


Сейчас вне форума
Группа: Свой человек
Сообщений: 357
Репутация: 1
Регистрация: 20 Sep 05
Живет: SPb

Нужна помощь. Ситуация такая: есть два диска, Д и Е. На Д каждый день приходят бэкапы БД, зипованные. Место забивается быстро, бэкапы часто не умещаются, из этого вытекает много проблем. Нужен скрипт cmd, который бы по мере поступления файлов копировал их на Е, а после удалял с Д.
Файлы имеют вид BU_дд.мм.гггг.zip. То есть каждый день дата меняется. Скрипты читать и понимать могу (за исключением всяких параметров, учусь еще), а вот писать — нет. Тем более тут переменные присутствуют.
Поменять путь в скриптах, которые бэкапы на Д шлют, проблематично, там завязок много. И скриптов не одна штука.
Может помочь кто-нить? :)
 
 
apostle
13 Dec 2008, 11:37  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

ядовитый лис
скрипты пишут на d:\ в корень?

Это сообщение отредактировал(а) apostle — 13 Dec 2008, 18:54
 
 
ядовитый лис
15 Dec 2008, 07:14  


Сейчас вне форума
Группа: Свой человек
Сообщений: 357
Репутация: 1
Регистрация: 20 Sep 05
Живет: SPb

нет, они пишут в d:\folder. Папка расшарена, в нее бэкапы приходят по сети.

Это сообщение отредактировал(а) ядовитый лис — 15 Dec 2008, 07:18
 
 
apostle
15 Dec 2008, 21:37  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

ядовитый лис
в реестре указать путь к шаре не на диск d:\folder, а на диск e:\folder, например; перезапустить службу server/сервер. ntfs-права на новую папку, естественно, должны быть аналогичны старой.

делается это по адресу: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares

Это сообщение отредактировал(а) apostle — 15 Dec 2008, 21:39
 
 
ядовитый лис
17 Dec 2008, 08:28  


Сейчас вне форума
Группа: Свой человек
Сообщений: 357
Репутация: 1
Регистрация: 20 Sep 05
Живет: SPb

нашел) можно поподробнее, по пунктам, если не затруднит? возможности поэкспериментировать нет, поэтому ошибиться не хотелось бы.
я так понимаю, сначала нужно создать папку folder на диске Е, потом наделить ее такими же правами, как и D:\folder. Потом сменить путь в реестре и перезапустить службу. Не понадобится ли перезагружать сам сервер? такой возможности нет пока. Кроме того, в D:\folder лежат логи бэкапов другого софта. Плюс скрипты, которые бэкапят этот самый другой софт. Что делать с ними?
Плюс все нужные скрипты запускаются запланированными тасками, я так понимаю, место исполнения тоже менять надо?

Кроме того, чтобы не сильно отклоняться от темы: все-таки нужен скрипт, который вычисляет самый старый архив и удаляет его, если их скапливается, скажем, больше 7ми штук.

Это сообщение отредактировал(а) ядовитый лис — 17 Dec 2008, 08:30
 
 
apostle
17 Dec 2008, 18:32  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

Цитата:
я так понимаю, сначала нужно создать папку folder на диске Е,

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

Цитата:
потом наделить ее такими же правами, как и D:\folder.

да. для этого можно воспользоваться командой cacls с ключом sddl:
получаем список прав на папку, для примера:
Код:
C:\Users\aleksey>cacls d:\ASUS /sddl
d:\ASUS "D:(A;OICI;FA;;;S-1-5-21-2084551657-3081275134-2248436574-1000)(A;OICIID
;FA;;;BA)(A;OICIID;FA;;;SY)(A;OICIIOID;GA;;;CO)(A;OICIID;0x1200a9;;;BU)(A;CIID;L
C;;;BU)(A;CIID;DC;;;BU)"

используя полученную строку (в примере это
Код:
"D:(A;OICI;FA;;;S-1-5-21-2084551657-3081275134-2248436574-1000)(A;OICIID;FA;;;BA)(A;OICIID;FA;;;SY)(A;OICIIOID;GA;;;CO)(A;OICIID;0x1200a9;;;BU)(A;CIID;LC;;;BU)(A;CIID;DC;;;BU)"
)
выставляем на новую папку аналогичные права:
Код:
cacls e:\ASUS /sddl:"D:(A;OICI;FA;;;S-1-5-21-2084551657-3081275134-2248436574-1000)(A;OICIID;FA;;;BA)(A;OICIID;FA;;;SY)(A;OICIIOID;GA;;;CO)(A;OICIID;0x1200a9;;;BU)(A;CIID;LC;;;BU)(A;CIID;DC;;;BU)"


Цитата:
Потом сменить путь в реестре и перезапустить службу.

совершенно верно =)

Цитата:
Не понадобится ли перезагружать сам сервер?

нет.

Цитата:
Кроме того, в D:\folder лежат логи бэкапов другого софта

есть желание оставить их на диске d:\?

Цитата:
Плюс скрипты, которые бэкапят этот самый другой софт. Что делать с ними?

если они обращаются к папке по локальному пути d:\folder, то они продолжат писать на диск d:\
если они обращаются по unc-пути \\servername\folder, то в дальнейшем они также будут писать на новое место. к приведнному выше решению меня сподвигла фраза "Папка расшарена, в нее бэкапы приходят по сети".

Цитата:
Плюс все нужные скрипты запускаются запланированными тасками, я так понимаю, место исполнения тоже менять надо?

скрипты дежат в той же папке? запускаются ч/з шару на удаленных станциях? в общем, подробнее, плз.

Цитата:
все-таки нужен скрипт, который вычисляет самый старый архив и удаляет его

ну если для торжества науки насвскидку такой вариант могу предложить:
Код:
dir /A:-D /O:D /T:W /b | findstr /N .*  | findstr /b "1:"


рез-том вывода будет 1:имя_самого_старого_файла. передаем эту строку в переменную, ч/з call, например, обрезаем лишние символы и удаляем.

Это сообщение отредактировал(а) apostle — 17 Dec 2008, 18:33
 
 
ядовитый лис
24 Dec 2008, 07:00  


Сейчас вне форума
Группа: Свой человек
Сообщений: 357
Репутация: 1
Регистрация: 20 Sep 05
Живет: SPb

Спасибо за помощь! Пока я телился, все скрипты были тупо перенесены с D:\folder на E:\folder, переписаны пути и права, папка расшарена :)
Теперь место быстро заканчивается на диске Е :lol:
Задача такая:
написать батник, который бы делал следующее:
1) Проверить, пришел ли сегодня актуальный бэкап
2) Если пришел, самый старый должен быть перенесен в D:\folder, если не пришел, действий никаких.
Этот батник будет запускаться таском в E:\folder с локального компа.

написать батник, который делал бы следующее:
1) Проверить, перемещен ли старый бэкап с Е на Д.
2) Если перемещен и если бэкапов в D:\folder больше трех, удалить самый старый.
Этот батник будет запускаться таском в D:\folder с локального компа.

Код:
dir /A:-D /O:D /T:W /b | findstr /N .*  | findstr /b "1:"

это нам дает только сортировку файлов, насколько я понимаю. Фраза "передаем эту строку в переменную" говорит мне только о том, что нужно задать переменную :) как это выглядит?
 
 
apostle
24 Dec 2008, 18:15  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

Calls one batch program from another.

CALL [drive:][path]filename [batch-parameters]

batch-parameters Specifies any command-line information required by the
batch program.

If Command Extensions are enabled CALL changes as follows:

CALL command now accepts labels as the target of the CALL. The syntax
is:

CALL :label arguments

A new batch file context is created with the specified arguments and
control is passed to the statement after the label specified. You must
"exit" twice by reaching the end of the batch script file twice. The
first time you read the end, control will return to just after the CALL
statement. The second time will exit the batch script. Type GOTO /?
for a description of the GOTO :EOF extension that will allow you to
"return" from a batch script.

In addition, expansion of batch script argument references (%0, %1,
etc.) have been changed as follows:


%* in a batch script refers to all the arguments (e.g. %1 %2 %3
%4 %5 …)

Substitution of batch parameters (%n) has been enhanced. You can
now use the following optional syntax:

%~1  — expands %1 removing any surrounding quotes (")
%~f1  — expands %1 to a fully qualified path name
%~d1  — expands %1 to a drive letter only
%~p1  — expands %1 to a path only
%~n1  — expands %1 to a file name only
%~x1  — expands %1 to a file extension only
%~s1  — expanded path contains short names only
%~a1  — expands %1 to file attributes
%~t1  — expands %1 to date/time of file
%~z1  — expands %1 to size of file
%~$PATH:1  — searches the directories listed in the PATH
environment variable and expands %1 to the fully
qualified name of the first one found. If the
environment variable name is not defined or the
file is not found by the search, then this
modifier expands to the empty string

The modifiers can be combined to get compound results:

%~dp1  — expands %1 to a drive letter and path only
%~nx1  — expands %1 to a file name and extension only
%~dp$PATH:1 — searches the directories listed in the PATH
environment variable for %1 and expands to the
drive letter and path of the first one found.
%~ftza1  — expands %1 to a DIR like output line

In the above examples %1 and PATH can be replaced by other
valid values. The %~ syntax is terminated by a valid argument
number. The %~ modifiers may not be used with %*
 
 
apostle
24 Dec 2008, 19:08  


Сейчас вне форума
Группа: Модератор
Сообщений: 3532
Репутация: 46
Регистрация: 11 Oct 04
Живет: spb

настройка переменных

SET [variable=[string]]

variable Specifies the environment-variable name.
string Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

If Command Extensions are enabled SET changes as follows:

SET command invoked with just a variable name, no equal sign or value
will display the value of all variables whose prefix matches the name
given to the SET command. For example:

SET P

would display all variables that begin with the letter 'P'

SET command will set the ERRORLEVEL to 1 if the variable name is not
found in the current environment.

SET command will not allow an equal sign to be part of the name of
a variable.

Two new switches have been added to the SET command:

SET /A expression
SET /P variable=[promptString]

The /A switch specifies that the string to the right of the equal sign
is a numerical expression that is evaluated. The expression evaluator
is pretty simple and supports the following operations, in decreasing
order of precedence:

()  — grouping
! ~ —  — unary operators
* / %  — arithmetic operators
+ —  — arithmetic operators
<< >>  — logical shift
&  — bitwise and
^  — bitwise exclusive or
|  — bitwise or
= *= /= %= += -=  — assignment
&= ^= |= <<= >>=
,  — expression separator

If you use any of the logical or modulus operators, you will need to
enclose the expression string in quotes. Any non-numeric strings in the
expression are treated as environment variable names whose values are
converted to numbers before using them. If an environment variable name
is specified but is not defined in the current environment, then a value
of zero is used. This allows you to do arithmetic with environment
variable values without having to type all those % signs to get their
values. If SET /A is executed from the command line outside of a
command script, then it displays the final value of the expression. The
assignment operator requires an environment variable name to the left of
the assignment operator. Numeric values are decimal numbers, unless
prefixed by 0x for hexadecimal numbers, and 0 for octal numbers.
So 0x12 is the same as 18 is the same as 022. Please note that the octal
notation can be confusing: 08 and 09 are not valid numbers because 8 and
9 are not valid octal digits.

The /P switch allows you to set the value of a variable to a line of input
entered by the user. Displays the specified promptString before reading
the line of input. The promptString can be empty.

Environment variable substitution has been enhanced as follows:

%PATH:str1=str2%

would expand the PATH environment variable, substituting each occurrence
of "str1" in the expanded result with "str2". "str2" can be the empty
string to effectively delete all occurrences of "str1" from the expanded
output. "str1" can begin with an asterisk, in which case it will match
everything from the beginning of the expanded output to the first
occurrence of the remaining portion of str1.

May also specify substrings for an expansion.

%PATH:~10,5%

would expand the PATH environment variable, and then use only the 5
characters that begin at the 11th (offset 10) character of the expanded
result. If the length is not specified, then it defaults to the
remainder of the variable value. If either number (offset or length) is
negative, then the number used is the length of the environment variable
value added to the offset or length specified.

%PATH:~-10%

would extract the last 10 characters of the PATH variable.

%PATH:~0,-2%

would extract all but the last 2 characters of the PATH variable.

Finally, support for delayed environment variable expansion has been
added. This support is always disabled by default, but may be
enabled/disabled via the /V command line switch to CMD.EXE. See CMD /?

Delayed environment variable expansion is useful for getting around
the limitations of the current expansion which happens when a line
of text is read, not when it is executed. The following example
demonstrates the problem with immediate variable expansion:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)

would never display the message, since the %VAR% in BOTH IF statements
is substituted when the first IF statement is read, since it logically
includes the body of the IF, which is a compound statement. So the
IF inside the compound statement is really comparing "before" with
"after" which will never be equal. Similarly, the following example
will not work as expected:

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

in that it will NOT build up a list of files in the current directory,
but instead will just set the LIST variable to the last file found.
Again, this is because the %LIST% is expanded just once when the
FOR statement is read, and at that time the LIST variable is empty.
So the actual FOR loop we are executing is:

for %i in (*) do set LIST= %i

which just keeps setting LIST to the last file found.

Delayed environment variable expansion allows you to use a different
character (the exclamation mark) to expand environment variables at
execution time. If delayed variable expansion is enabled, the above
examples could be written as follows to work as intended:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

If Command Extensions are enabled, then there are several dynamic
environment variables that can be expanded but which don't show up in
the list of variables displayed by SET. These variable values are
computed dynamically each time the value of the variable is expanded.
If the user explicitly defines a variable with one of these names, then
that definition will override the dynamic one described below:

%CD% — expands to the current directory string.

%DATE% — expands to current date using same format as DATE command.

%TIME% — expands to current time using same format as TIME command.

%RANDOM% — expands to a random decimal number between 0 and 32767.

%ERRORLEVEL% — expands to the current ERRORLEVEL value

%CMDEXTVERSION% — expands to the current Command Processor Extensions
version number.

%CMDCMDLINE% — expands to the original command line that invoked the
Command Processor.
 
 
47 ответов с 27 May 2005, 12:23 Версия для печати
Страницы: (4) 1 [2] 3 4 
<< Назад в Windows
ОтветитьНовая темаНовый опрос