Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Командная строка Windows   Найти похожие ветки 

 
БарЛог ©   (2007-07-27 10:51) [0]

Всем привет! Подскажите пожалуйста:
есть диск С:\
на нём папка Data\
В ней лежат папки "natasha", "tatyana" и т.д. в которых имеются подпапки и файлы.
Хочу с помощью Bat-ника удалить все папки с именами, за исключением некоторых. (например "admin").
Подскажите пожалуйста код, как это можно реализовать в батнике.

ЗЫ. Некоторые файлы в некоторых папках на текущий момент времени могут быть заняты :(
В этом случае они должны просто игнорироваться.

ЗЗЫ. Вариант, когда сначала копируем папку "admin" в папку "резерв" и после чистки папки "data" перемещаем обратно - подойдёт.

Помогите, а то я уже всю голову сломал :(

Заранее спасибо.


 
БарЛог ©   (2007-07-27 10:58) [1]

cd C:\
mkdir backup-profiles
copy "C:\Data\Admin" "C:\backup"
pause

Не работает :(
Это одна из основных "камней".
------------------------------------------

rmdir /S /Q "C:\Data"
mkdir "Data"

Вроде бы удаляет как надо.


 
Dib@zol ©   (2007-07-27 11:01) [2]


> cd C:\
> mkdir backup-profiles
> copy "C:\Data\Admin" "C:\backup"
> pause

Мдяя... мож лучше так: copy C:\Data\Admin\*.* C:\backup\*.*
ЗЫ учи командную строку..


 
БарЛог ©   (2007-07-27 11:04) [3]

Dib@zol ©   (27.07.07 11:01) [2]

C:\Data>mkdir "c:\reserv 2"

C:\Data>copy a\*.* "c:\reserv 2\"
a\*.*
Не удается найти указанный файл.
Скопировано файлов:         0.

C:\Data>pause
Для продолжения нажмите любую клавишу . . .

Сам учи :) Мне надо скопировать КАТАЛОГИ.


 
ProgRAMmer Dimonych ©   (2007-07-27 11:07) [4]

> БарЛог ©   (27.07.07 11:04) [3]
> Dib@zol ©   (27.07.07 11:01) [2]
> C:\Data>mkdir "c:\reserv 2"
> C:\Data>copy a\*.* "c:\reserv 2\"

Это что за разврат, стесняюсь спросить? Двоеточие Билл Гейтс добавит?


 
БарЛог ©   (2007-07-27 11:08) [5]

ProgRAMmer Dimonych ©   (27.07.07 11:07) [4]
это папка с именем "а" :)


 
Игорь Шевченко ©   (2007-07-27 11:10) [6]

xcopy ?


 
ProgRAMmer Dimonych ©   (2007-07-27 11:11) [7]

> БарЛог ©   (27.07.07 11:08) [5]
> ProgRAMmer Dimonych ©   (27.07.07 11:07) [4]
> это папка с именем "а" :)

Фу-у-ух, предупреждать же ж надо :)


 
БарЛог ©   (2007-07-27 11:14) [8]

Игорь Шевченко ©   (27.07.07 11:10) [6]

ВО! То, что надо! Спасибо.


 
umbra ©   (2007-07-27 11:21) [9]

for /F %%mydir in (`dir /A:D c:\data`) do
 if /I not %%mydir=="admin" rmdir /S /Q %%mydir


 
SlymRO ©   (2007-07-27 11:25) [10]

" VBScript.
"  ClearTemp.vbs
Option Explicit

Dim DelFiles,var
Dim FSO,root
Dim RE,ExcludePatterns
ExcludePatterns = array("admin","dont_del")

DelFiles=false
For Each var In WScript.Arguments
 if var="-delete" then
   DelFiles=true
 end if
Next

Set RE = New RegExp
RE.IgnoreCase = True

Set FSO = CreateObject("Scripting.FileSystemObject")
Set root= FSO.GetFolder("С:\Data")
WScript.StdOut.WriteLine ("Scan folder: " + root.Path)
DoDir root

Sub DoDir(Folder)
 On Error Resume Next
 Dim var
 For Each var in Folder.SubFolders
   if not Exclude(var.Path)
     DoDelete(var)
End if
 Next
 For Each var In Folder.Files
   DeleteFile(var.Path)
 Next
End Sub

function Exclude(FileName)
 Dim Pattern
 For Each Pattern In Patterns
   RE.Pattern = Pattern
   if (Pattern<>"") then
     If RE.Test(FileName) Then
       Exclude =true
       Exit Function
     End if
    End if
 Next
 Exclude = false
End Function

Sub DoDelete(Folder)
 On Error Resume Next
 Dim Item
 For Each Item in Folder.SubFolders
   DoDelete Item
DeleteFolder(Item.Path)
 Next
 For Each Item in Folder.Files
DeleteFile(Item.Path)
 Next
End Sub

Private Sub DeleteFolder(FileName)
 WScript.StdOut.WriteLine(FileName)
 if DelFiles then
   On Error Resume Next
   FSO.DeleteFolder FileName
   If Err.number<>0 Then
     WScript.StdOut.WriteLine(Err.Description)
   End If
 end if
End Sub

Private Sub DeleteFile(FileName)
 WScript.StdOut.WriteLine(FileName)
 if DelFiles then
   On Error Resume Next
   FSO.DeleteFile FileName
   If Err.number<>0 Then
     WScript.StdOut.WriteLine(Err.Description)
   End If
 end if
End Sub


usage: cscript //nologo ClearTemp.vbs


 
БарЛог ©   (2007-07-27 11:43) [11]

umbra ©   (27.07.07 11:21) [9]
А как будет выглядеть, если таких папок более чем одна? (например, Админ1 и Админ2)

SlymRO ©   (27.07.07 11:25) [10]
Ради интереса посмотрю вечером. Спасибо.


 
SlymRO ©   (2007-07-27 11:50) [12]

БарЛог ©   (27.07.07 11:43) [11]
ExcludePatterns = array("admin","Админ1","Админ2","АдминN")


 
SlymRO ©   (2007-07-27 11:53) [13]

http://forum.sysadmins.ru/3/79925/


 
БарЛог ©   (2007-07-27 12:10) [14]

> http://forum.sysadmins.ru/3/79925/
Во, хорошая ссылочка. Пасиба.


 
umbra ©   (2007-07-27 12:57) [15]

в предыдущем случае надо в команду dir  добавить параметр /B
Предполагаем, что папки не имеют аттрибута "только для чтения"
Записываем имена каталогов, которые не надо удалять, в файл excl.txt по одному на строчку и

for /F %%mydir in (`type excl.txt`) do attr +r c:\data\%%mydir
for /F %%mydir in (`dir /B /A:D-R c:\data`) do rmdir /S /Q %%mydir
for /F %%mydir in (`type excl.txt`) do attr -r c:\data\%%mydir


 
umbra ©   (2007-07-27 12:58) [16]

не attr, а attrib :(


 
БарЛог ©   (2007-07-27 13:06) [17]

Еще небольшой вопрос. Есть ли что-то вроде переменной окружения, в которой содержится имя компьютера? (выдается по команде "net name").


 
БарЛог ©   (2007-07-27 13:07) [18]

> Еще небольшой вопрос. Есть ли что-то вроде переменной окружения, в которой содержится имя компьютера? (выдается по команде "net name").

Пасиба, нашёл методом тыка :)

echo %computername%


 
SlymRO ©   (2007-07-27 13:15) [19]

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerN ame\ComputerName

var WS = new ActiveXObject("WScript.Shell");
var value;
value = WS.RegRead ("HKLM\\SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ActiveComputerName\\Co mputerName");


Поблагодарил за ссылку, а пользоваться ею забыл...


 
Empleado ©   (2007-07-27 13:23) [20]


> umbra ©

good !


 
umbra ©   (2007-07-27 13:30) [21]

редкая гадость этот виндовский шелл!! лучше вбскриптом пользоваться :)


 
KodVer   (2007-07-27 13:52) [22]


> umbra ©   (27.07.07 13:30) [21]
>
> редкая гадость этот виндовский шелл!! лучше вбскриптом пользоваться
> :)
>

Еще лучше bash-ем или sh-ем :)))


 
БарЛог ©   (2007-08-16 15:12) [23]

И снова всем привет!
Появился еще один вопрос по CMD. Отдельную тему созхдавать не хочется.
Есть несколько серверов (srv1, srv2 ...)с расшаренными (для меня) дисками C$.
В командной строке набираю: dir \\srv1\c$
Выдаёт мне список каталогов и файлов + указывает, сколько свободного места осталось.

Появилась задача написать утилиту, котоаяй после запуска выдавала бы что-то вроде:
"
srv1: 12345 mb free
srv2: 456332 mb free
...
srv(n-1): 34562 mb free
srv(n): 12207 mb free
"

Хочется реализовать оное с помощью командкой строки. Если не получится, придётся ваять на делфи.

Отсюда два вопроса:
1. Как узнать "srv1: 12345 mb free" из командной строки (без лишней информации типа списка файлов)?
2. Как узнать, сколько свободного места на сетевом расшареном диске?

Заранее спасибо.


 
oldman ©   (2007-08-16 15:15) [24]

А зачем командной строкой?
Проводник и клавишу DEL отменили специальным постановлением ВЦСПС?


 
БарЛог ©   (2007-08-16 15:20) [25]

oldman ©   (16.08.07 15:15) [24]
Вай, долго "вкуривал", при чем тут проводник :)
Вы на первый вопрос не отвечайте. Я его уже решил. Там нужен был именно скрипт, т.к. сервером очень много + доступ на удаление не всегда есть и не ко всем папкам (файлам). Скрипт отсутствие доступа просто игнорирует, а в проводнике приходится щелкать "пропустить".

Меня интересует вопрос в
БарЛог ©   (16.08.07 15:12) [23]


 
oldman ©   (2007-08-16 15:47) [26]


> БарЛог ©   (16.08.07 15:12) [23]
> Отсюда два вопроса:
> 1. Как узнать "srv1: 12345 mb free" из командной строки
> (без лишней информации типа списка файлов)?
> 2. Как узнать, сколько свободного места на сетевом расшареном
> диске?


dir > info.txt


 
БарЛог ©   (2007-08-16 15:50) [27]

> dir > info.txt
А что это даст? Лишнего то не отбросит. Была идея с этой командой и последующим считыванием N-ной строки (где находятся сведения о свободном месте) из файла, но N оказалось переменной величиной, т.к. папки на диске C$ могут появляться :(


 
oldman ©   (2007-08-16 15:52) [28]


> БарЛог ©   (16.08.07 15:50) [27]
> папки на диске C$ могут появляться :(


Батенька мой, если вы хотите в реал-тайм отслеживать фри-спейс, переходите на Дельфи.


 
БарЛог ©   (2007-08-16 15:56) [29]

oldman ©   (16.08.07 15:52) [28]
> Батенька мой, если вы хотите в реал-тайм отслеживать фри-спейс, переходите на Дельфи.

Я хочу не в реальном времени, а по запросу. На делфи написать всегда можно. Но хочется немного и моск напрячь. :)

Дата рождения: 07.02.1970 знак зодиака: Водолей   VS  Дата рождения: 6.12.1984 знак зодиака: Стрелец
Да кто еще из нас батенька :)


 
oldman ©   (2007-08-16 15:58) [30]


> БарЛог ©   (16.08.07 15:56) [29]


А если по запросу, зачем [27]?


 
БарЛог ©   (2007-08-16 16:07) [31]

oldman ©   (16.08.07 15:58) [30]
Неудобно анализировать. Серверов - несколько десятков. Если сидеть и выискивать среди списка каталогов свободное место, то запаришься, ИМХО.


 
Slym ©   (2007-08-17 05:40) [32]

Повторюсь:
Поблагодарил за ссылку, а пользоваться ею забыл...
Там есть готовый скрипт, ну если не готовый довари и не забудь посолить



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.037 c
11-1165878940
Turbid
2006-12-12 02:15
2007.09.16
KOL и темы XP


6-1169289857
Dordmunt
2007-01-20 13:44
2007.09.16
Отправить xml по HTTPS зерез idHTTP


15-1184659616
vajo
2007-07-17 12:06
2007.09.16
Бесплатные аналоги ПО


15-1185530750
Vlad Oshin
2007-07-27 14:05
2007.09.16
шахматы. Как сходить?


1-1184035040
hyper_omsk
2007-07-10 06:37
2007.09.16
Привелигированный доступ к outlook как?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский