Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.196.27] |
|
Сообщ.
#1
,
|
|
|
Цитата Jin X @ У меня один вопрос: учитывая что эти вещи появились лет этак 14 назад, где ты находишь системы, которые могут не поддерживать данные опции? Проверку поддержки расширенной обработки команд и включение этой расширенной обработки, а также отложенного расширения переменных среды я делаю следующим образом: Добавлено Твой пример грузит Core i7 3770 на 10%. Не многовато-ли для ожидания? Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#2
,
|
|
|
Цитата Dark Side @ Много. Предложи другой вариант.Твой пример грузит Core i7 3770 на 10%. Не многовато-ли для ожидания? Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#3
,
|
|
|
Я не специалист по скриптам, но думаю что переход на powershell решит все проблемы
Добавлено PS C:\Users\administrator> help Start-Sleep ИМЯ Start-Sleep ОПИСАНИЕ Приостанавливает выполнение скрипта или сеанса на указанный период времени. СИНТАКСИС Start-Sleep -Milliseconds <int> [<CommonParameters>] Start-Sleep [-Seconds] <int> [<CommonParameters>] ОПИСАНИЕ Командлет Start-Sleep приостанавливает выполнение скрипта или сеанса на указанный период времени. Его можно использ овать для решения различных задач, например чтобы дождаться завершения операции или приостановить работу перед повт ором операции. ССЫЛКИ ПО ТЕМЕ Online version: http://go.microsoft.com/fwlink/?LinkID=113407 ЗАМЕЧАНИЯ Для просмотра примеров введите: "get-help Start-Sleep -examples". Для получения дополнительных сведений введите: "get-help Start-Sleep -detailed". Для получения технических сведений введите: "get-help Start-Sleep -full". Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#4
,
|
|
|
^D^ima, а если написать программу на C++, Delphi или использовать JS/VBS, то много чего ещё сделать можно.
Здесь (в этой ветке) речь идёт о cmd! Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#5
,
|
|
|
так powershell используется повсеместно, начиная с висты, кому нужен этот cmd?
Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#6
,
|
|
|
использоваться он начал чуть раньше, а с висты (или таки с семёрки?) начал идти сразу вместе с виндой уже как полноценная замена устаревшему CMD.
Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#7
,
|
|
|
Цитата ^D^ima @ так powershell используется повсеместно, начиная с висты, кому нужен этот cmd? По совету выше ... что-то пошло не так D:\Swap>help Start-Sleep Данная команда не поддерживается. Воспользуйтесь параметром "Start-Sleep /?". D:\Swap>Start-Sleep /? "Start-Sleep" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. ЗЫ: Win10-x64 Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#8
,
|
|
|
JoeUser
ты ее из cmd что-ли запускал? найди powershell в пуске Добавлено Откроешь для себя новый мир по управлению виндой Добавлено Узнал что можно даже с outlook взаимодействовать через PS, фантастика Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#9
,
|
|
|
Цитата ^D^ima @ Найди Powershell ISE в пуске, хватит уже сидеть в консолинайди powershell в пуске Цитата ^D^ima @ я по базе sqlite гулял обычными cd и ls. Правда тормозило оно адово.Узнал что можно даже с outlook взаимодействовать через PS, фантастика Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#10
,
|
|
|
Цитата ^D^ima @ найди powershell в пуске Цитата Dark Side @ Правда тормозило оно адово. Тормозная хрень) Цитата Dark Side @ хватит уже сидеть в консоли Far - мое все) Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#11
,
|
|
|
Цитата JoeUser @ ну да, садо-мазо из первого сообщения - наше всёТормозная хрень) Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#12
,
|
|
|
В общем, так бы написал сразу:
powershell -command start-sleep -milliseconds 100 Добавлено Только реальная задержка получается на 0.4 сек дольше почему-то. Хоть 1 мсек ставь, хоть 1000... Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#13
,
|
|
|
powershell сама запускается долго - ей .NET надо подтягивать, да и безопасность всю проверить - вдруг у тебя нет права запускать команды?
Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#14
,
|
|
|
Тогда как использовать задержку из .CMD с помощью powershell?
Написать код полностью в отдельный файл на powershell и вызвать его из .CMD? Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#15
,
|
|
|
Выкинуть CMD и писать сразу на powershell и выполнять этот файл на powershell.
Это сообщение было перенесено сюда или объединено из темы "Трюки в CMD" |
Сообщ.
#16
,
|
|
|
Цитата Kray74 @ Да, только для запуска скрипта нужно выполнить:Выкинуть CMD и писать сразу на powershell и выполнять этот файл на powershell. powershell -Command Set-ExecutionPolicy RemoteSigned powershell -File MyScript.ps1 |
Сообщ.
#17
,
|
|
|
Цитата Jin X @ ты реально не знаешь как это лечится?Потому что по умолчанию ps1-файлы не ассоциированы с powershell Цитата Jin X @ Запусти её один раз от имени админа. а если не выполнить первую команду, то PowerShell выдаст ошибку, что запуск скриптов запрещён системой... |
Сообщ.
#18
,
|
|
|
Dark Side, а ты когда пишешь программы, тоже снабжаешь их инструкциями для юзера о том, "как сделать, чтобы программа запустилась"?
Я понимаю, что CMD или PS1 пишется, как правило, для себя, но раз уж мы затеяли такую пьянку, то давай сделаем вариант без костылей |
Сообщ.
#19
,
|
|
|
Jin X, если ты про безопасность, то извини - только админ имеет право менять подобные настройки на всю систему, а по дефолту майкрософт не доверяет пользователям запускать что попало и я думаю не надо объяснять почему.
Если про ассоциации - то я (да и не только я - это одна из основных жалоб на PS) действительно не знаю почему по дефолту стоит именно редактирование файла, а запуск - вторым пунктом контекстного меню, но что есть - то есть. Да и мне реально никогда это не мешало - я всегда работаю из ISE, давно закинул что мне надо в Microsoft.PowerShellISE_profile.ps1, а потому и не пытался узнавать менее костыльных способов. |
Сообщ.
#20
,
|
|
|
Цитата Jin X @ Только реальная задержка получается на 0.4 сек дольше почему-то. Хоть 1 мсек ставь, хоть 1000... Встречалось упоминание, что поскольку для командных файлов не нужна такая точность (ибо интерпретатор может дать сопоставимую погрешность), таймер реализован через кратное ожидание интервалов по 500 миллисекунд. У себя в командных файлах юзаю "timeout X", где X - число секунд. Оно ещё прикольно отсчитывает время на экране, плюс можно прервать/проскочить. |
Сообщ.
#21
,
|
|
|
Цитата Mr.Delphist @ Pltcm дело именно в загрузке. Потому как 1 мс в реальности ≈ 400 мс, 100 мс ≈ 500 мс, а 1000 мс ≈ 1400 мс. Встречалось упоминание, что поскольку для командных файлов не нужна такая точность (ибо интерпретатор может дать сопоставимую погрешность), таймер реализован через кратное ожидание интервалов по 500 миллисекунд. |
Сообщ.
#22
,
|
|
|
Цитата Kray74 @ Выкинуть CMD и писать сразу на powershell и выполнять этот файл на powershell. Выкинуть powershell и написать на Си. А теперь встаёт вопрос, если я мог писать на Си изначально, зачем мне CMD? Пример Jin X-а работает в дефолтной среде на любом cmd, без каких либо предустановленных вещей и условностей, имхо, суть именно в этом. Тоесть, я могу запустить это на Win95 и на Win10 не задумываясь, есть ли на них что-то предустановленное или нет? Именно по этому, в контексте с темой "Трюки в CMD" данный вопрос вообще не имеет смысла. Это как на мой вопрос "Как найти файл в VB6.0" отвечать "Используй Delphi7". |
Сообщ.
#23
,
|
|
|
Цитата VisualProg @ На win95 ты это не запустишь, cmd - это не юниксовые консольные тулзы, которые с 80-х годов не обновлялись, он с каждой версией винды чуть-чуть изменяется. По минимуму, но всё-равно говорить "могу запустить это на Win95" - крайне самонадеянно. Тоесть, я могу запустить это на Win95 и на Win10 не задумываясь, есть ли на них что-то предустановленное или нет? |
Сообщ.
#24
,
|
|
|
Цитата Dark Side @ О, UNIX'овые тулзы уже в 80 году работали, как надо. А виндовые раз в пять лет заново приходится переписывать. А до завершения так же далеко, как в начале.cmd - это не юниксовые консольные тулзы, которые с 80-х годов не обновлялись Существует общее подмножество у разных версий CMD и BAT. BAT-файлы конечно сильно ограничены в возможностях даже по сравнению с CMD, зато будут выполняться начиная с DOS (Хотя некоторыми возможностями DOS в винде воспользоваться не получится, испортили) |
Сообщ.
#25
,
|
|
|
Цитата VisualProg @ Именно по этому, в контексте с темой "Трюки в CMD" данный вопрос вообще не имеет смысла. Я бы сказал так что "Трюки в CMD" вообще не имеют смысла т.к. все системы ниже Vista сняты с техподдержки со всемы вытекающими. Тоже самое что показывать "Трюки в Turbo pascal 7.0" на Windows 10. Цитата amk @ А виндовые раз в пять лет заново приходится переписывать. А до завершения так же далеко, как в начале. о чем именно речь? Цитата VisualProg @ Выкинуть powershell и написать на Си. А теперь встаёт вопрос, если я мог писать на Си изначально, зачем мне CMD? Для написания на си нужен компилятор как минимум, которого нет в винде и готовая программа на выходе не тоже самое что код для интерпритатора на входе. PowerShell позиционируется как прямая замена cmd с массой плюшек, зачем ездить на паровой машине если можно на реактивном самолете? |
Сообщ.
#26
,
|
|
|
Цитата ^D^ima @ Системы с техподдержки, может, и сняты, но CMD всё равно прекрасно работают. В отличие от Turbo Pascal 7.0... Я бы сказал так что "Трюки в CMD" вообще не имеют смысла т.к. все системы ниже Vista сняты с техподдержки со всемы вытекающими. Тоже самое что показывать "Трюки в Turbo pascal 7.0" на Windows 10. Добавлено У каждой работающей системы (подсистемы, языка и т.д.) есть своё применение. И зачастую использование CMD/BAT более оправдано, чем написание собственного приложения на ЯВУ, даже простого. |
Сообщ.
#27
,
|
|
|
Цитата ^D^ima @ Наверно по той же, по которой не везде летают реактивные самолёты. PowerShell позиционируется как прямая замена cmd с массой плюшек, зачем ездить на паровой машине если можно на реактивном самолете? |
Сообщ.
#28
,
|
|
|
Цитата amk @ т.е. через задний проход? Или вы именно это называете unix-way'ем?О, UNIX'овые тулзы уже в 80 году работали, как надо Цитата amk @ Это называется "развитие", все языки, все программы со временем доделываются и переделываются. Кроме посикса.А виндовые раз в пять лет заново приходится переписывать. Цитата amk @ Паровые машины вообще не летают, так что вопрос остаётся в силе Наверно по той же, по которой не везде летают реактивные самолёты. |
Сообщ.
#29
,
|
|
|
Господа, мы
|
Сообщ.
#30
,
|
|
|
имхо, мы к ней приближаемся, просто в названии раздела trollface забыли поставить.
|
Сообщ.
#31
,
|
|
|
M Давайте реально Holy Wars в соответствующем разделе! |
Сообщ.
#32
,
|
|
|
Вот ещё один пример.
У меня на сервере был написанный до меня cscript файл который очищал папку со старыми файлами определенного возраста и удалял пустые папки. Вот такой: var StartFolder="c:\\Обмен"; // Scanning Start Folder var Interval=45; // Days //folders and files in StartFolder not deleted var fso, f, fc; var deep=0; if(WScript.Arguments.length==0) WScript.Quit(); if(WScript.Arguments(0)!="GO") WScript.Quit(); Interval = Interval * 1000 * 60 * 60 * 24; fso = new ActiveXObject("Scripting.FileSystemObject"); cd = new Date().valueOf(); ScanFolder(StartFolder); function ScanFolder(fldr) { var fl, fc, f var fcd, fmd fl = fso.GetFolder(fldr); // Subfolder fc = new Enumerator(fl.SubFolders); for (;!fc.atEnd(); fc.moveNext()){ deep++; ScanFolder(fc.item()); deep--; } delete fc; delete f; var fcount=0; fc = new Enumerator(fl.Files); // Files for (;!fc.atEnd(); fc.moveNext()){ f = fso.GetFile(fc.item()); fcd = new Date(f.DateCreated); fmd = new Date(f.DateLastModified); if(cd - fmd.valueOf()>Interval && cd - fcd.valueOf()>Interval && deep>0){ // Last Modification fso.DeleteFile(fc.item(), true); } else{ fcount++; } } delete fc; delete f; if(fcount==0 && deep>1) // Delete Empty Folders fso.DeleteFolder(fldr, true); } Я его переписал на PS так: #Удялем файлы дата создания и дата изменения которых меньше чем 30 дней Get-ChildItem "E:\Обмен"|Get-ChildItem -Recurse -force|? { $_.LastWriteTime -lt (Get-Date).AddDays(-30) -and $_.CreationTime -lt (Get-Date).AddDays(-30) } | Where-Object {$_.mode -notmatch "d"}|Remove-Item -Force # # #Удаляем пустые папки в которых нет дочерних файлов и папок Get-ChildItem "E:\Обмен"|Get-ChildItem -Recurse -force|Where-Object {$_.mode -match "d"} | Where-Object {$_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0}| Remove-Item -Force Как говориться почувствуй разницу |