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

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


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

Mist:

У меня есть предположение, что твой командный процессор не находит утилиту xcopy, но я, как и CreatoR, не ясновидец. Краткость - только сестра таланта :) .

Какие выдаются сообщения? Команду xcopy ты запускал из Windows или при загрузке с дискеты, и если с дискеты, то с какой?

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

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

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

Тролль:

Есть один вопрос:

Вот на счёт того как сокращать длинные имена, если рядом нет схожих каталогов\файлов, я знаю. А вот что делать, если имя каталога, или файла, к которому нужно добраться, схожий с другими, находящимися рядом с каталогам или файлом? Т.е, если допустим в каталоге, через который проходит путь (например для запуска какой то проги) в батнике, есть папка под именем folder number 1, а также рядом лежит папка под именем folder number 2, и ещё одна папка, под именем folder number 11, то сокращая путь так folder~1, насколько мне известно (из тестов), приоритет при поиске батником эту папку (на которую сокращён путь), будет остановлен на той папке, имя которой наиболее длинное (folder number 11). Но, как же тогда прописать сокращение, если я хочю допустип запустить что то, в папке folder number 2? Или скажем рядом с этой же папкой, лежит ещё папка под именем folder@nmber#1, то как в таком случае, батник выбирает приоритет? И вообще, хотел бы знать, как определяется приоритет при поиске нужного каталога\файла, к которому путь в батнике сокращён, и как его соответственно сокращять. Т.е, задействуются только лишь символы ~1, ~2 ~3 и т.д, или есть другие способы?

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

CreatoR:

насколько мне известно (из тестов), приоритет при поиске батником эту папку (на которую сокращён путь), будет остановлен на той папке, имя которой наиболее длинное
Нет. Система не интересуется длиной имени. Она просто помнит для каждого файла два имени - длинное и короткое - дающиеся ему при его создании.

Поскольку короткое имя создается одновременно с длинным, системой берется для него первый незанятый номер. Если бы номера соответствовали длине имени, то при появлении более длинного "длинного имени" пришлось бы переименовывать старые файлы и система не смогла бы работать.

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

Не зная истории каталога, таким образом, короткое имя по длинному имени определить невозможно. Но соответствие существующих длинных и коротких имен легко посмотреть командой dir /x

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

Тролль:

Я кажется понял (и извени если это тоже самое что ты пытался передать в твоём посте, поросто до меня долго доходило :doh: , и не на 100% уверен что правильно понял) :) :

Когда я указываю папку\файл (в сокращённом виде), и если рядом есть папка, в имени которой первые шесть символов те же, что и в имени папки к которой указываю путь, нужно просто знать какая из них была раньше создана, и соответственно строить сокращение. Т.е, если сокращение такое: folder~1, то будет приоритет останавливаться на той папке, в имени которой первые шесть символов равняются folder (т.е теми же что и в сокращении), и она также была создана раньше, чем другая папка, которая лежит рядом с этой, и имеет в её имени такие же первые шесть символов (folder). А если я хочю указать путь к той папке, которая является 'старее' чем папка, в имени которой те же первых 6 символов (folder), то указывать сокращение нужно так: folder~2.

Я правильно всё понял? :)

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

CreatoR:

Да. Хотя в твоем примере надо было использовать слово "моложе", а не "старее", ведь папка с номером 2 родилась позже папки с номером 1 (поэтому она и получила номер 2).

Но полагаться на это полностью все же нельзя. Потому что следующая папка нормально получила бы номер 3, но если перед ее созданием ты сотрешь папку с номером 1, то новая папка получит этот, освободившийся, номер.

То есть система просто при сокращении длинного имени до короткого имени пытается дать сначала имя с номером 1, если такое короткое имя уже занято - с номером 2, если и оно занято - с номером 3 и так далее.

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

Новое короткое имя генерируется только при создании файла (папки), и это будет имя с наименьшим незанятым номером. Вот тут можно сказать, что приоритет имеет наименьший незанятый номер.

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

Тролль:

Ясно, с этим вопросом всё понятно. Спасибо!

А вот есть такой вопрос:

Можно ли каким то образом, при внедрении пути в файл (cd > path.txt), заставить все слэши в этом пути, перевернуться в противоположную сторону? Т.е, допустим внидряется такой путь в файл: "c:\program files\programma\creator", тогда хотелось бы, чтобы он внедрился таким образом: "c:/program files/programma/creator".

P.S:

Мне нужно собрать по кускам фаил *.js, а в нём должна быть прописана строка, которая ведёт к кэшу (этот файл, предназначен для боковой панели в опере ;) ), но путь к нему (к кэшу), должен быть через перевернутые слэши в противоположную сторону.

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

CreatoR:

Опять же задача подготовки Java-скриптов - не для bat-файлов. Заменять в строке символы \ на символы / - получается что-то очень громоздкое из многих for и if, гораздо проще написать за минуту утилитку на Pascal, что я и сделал.

Надо сформировать в файле ее вызов вместе со строкой, которую ей надо обработать. Пример использования - файл t10.bat.

Или можно взять обрабатываемую строку прямо из файла. Пример использования - файл t11.bat.

В обоих случаях выход у меня направляется в файл b.txt.

Кстати, насчет скрывания окна выполнения батника - есть такая утилита cmdow которую можно попросить скрывать заданное окно, в том числе то, в котором она была вызвана (вызов cmdow @ /HID ), тогда при запуске батника, в котором этот вызов первой строкой, окно появится и скроется. Конечно, с клавиатуры тогда уже ничего не введешь, да и окно вначале появляется, но все же... если это окно чем-то мешает.

t12.zip

t12.zip

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

Тролль:

...гораздо проще написать за минуту утилитку на Pascal, что я и сделал.

Огромное тебе :greedy: - Эта проблема решилась, но пояилась новая :bye1: . Дело в том, что в конце файла, создаётся не понятный (мне) символ (SUB), и также переходит строка (всё это мешает исполнению нужных действии этого файла - pathtocache.js). Я пробовал исправить это через утилиту rw, ech, и даже через slash (Кстати она тоже как и утилита rw, и ech, способна предотвратить переход строки), но так и не получилось. Мне нужно чтобы либо эта команда: copy /y pathtc.txt+path1.txt+end.txt pathtocache.js, каким то образом, не переводила строку в файле pathtocache.js - либо, чтобы эта команда: for /f "delims=" %%i in (cd) do echo %%i| slash > PathToCache.js, предавала бы в файл pathtocache.js путь где находится батник (т.е путь к рабочей папки батника). -Этот пример не правилен, там где (cd), наверное должно быть что то другое, или вообще команда должна быть другая, я толком не знаю, так что лучше я гадать не буду. Я бы таким образом, просто собирал бы файл pathtocache.js, внедряя в него нужный текст, не из файлов, а прямо из батника. И тогда, можно будет использовать утилиту slash для предотвращения перехода строки.

Кстати, насчет скрывания окна выполнения батника - есть такая утилита cmdow

Класная утилита, и ещё более класный, сам сайт где она лежит! :doh: Спасибо! Буду юзать её, и сайт!

получается что-то очень громоздкое из многих for и if

Я понимаю, ладно, пока что можно это оставить, но если у тебя будут силы, желание, и терпение, когда нибудь в будущем, может всё же расскажешь как такое выполнить посредствам одного лишь батника? Если конечно не трудно :rolleyes: - Мне просто любопытно, и естественно хочется немного независимости (ведь ни всегда под рукой будет нужная утилита).

P.S:

Есть ещё такой маленький вопросик:

Команда format c: /autotest - вроде бы, как я помню, отформатирует диск С: без всякого предупреждения. Так ли это, и если да, то актуальна ли эта команда в Windows ХP? Т.е, если я в батник помещаю эту команду, и затем запускаю его (в виндоусе), будет ли осуществлятся формат?

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

CreatoR:

Мне нужно чтобы либо эта команда: copy /y pathtc.txt+path1.txt+end.txt pathtocache.js, каким то образом, не переводила строку в файле pathtocache.js
При таком копировании она добавляет символ конца файла (тот самый, который вводится по F6). С ключом /b (binary) она этого делать не будет. То есть надо так:

copy /y /b pathtc.txt+path1.txt+end.txt pathtocache.js

Команда format c: /autotest - вроде бы, как я помню, отформатирует диск С: без всякого предупреждения. Так ли это, и если да, то актуальна ли эта команда в Windows ХP?
Нет. Такого ключа у команды format нет, да и вообще никакого ключа для форматирования без предупреждения нет - слишком опасная операция. Форматировать логический диск с системой из самой этой системы команда format, насколько я помню, даже при всех подтверждениях откажется.

А чтобы диск (не работающей системы) форматировался без запросов к пользователю, надо подготовить файл с ответами на запросы команды. Демонстрацию прикладываю. Чтобы при проверке случайно не лишиться какого-нибудь логического диска, батник из примера будет форматировать для примера дискету. В файле endn.txt два символа требуемых ответов на запросы команды format: перевод строки и буква n. Естественно, при проверке работы дискету с мало-мальски ценным содержимым не брать...

P.S. Логический диск с системой - имел в виду систему Windows 2k/XP.

t13.zip

t13.zip

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

Тролль:

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

Как я понял, в твоём примере, дискета не форматируется. Т.к там (в файле endn.txt) присутствует символ (ответ) n (no), но если я поставлю символ y, вместо n, то полагаю будет произведён формат без подтверждения?. (просто нет под рукой ненужной дискеты, иначе бы проверил).

Думаю можно сделать нужный батник (если я не ошибся в предположении), для форматирования дикеты, без подтверждения, вот так:

echo.> endy.txtecho y>> endy.txtformat /q A: < endy.txtdel endy.txt

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

У меня есть ещё пару вопросов (не связанных с этим):

  • Нужно осуществить поиск определённого текста в файле, и если он там есть, то команда должна передавать управление метке (через goto метка). Я помню вот эта команда: for /f %%I in (c.txt) do if /i %%I==exit goto ext, проверяет наличие текста exit в файле c.txt, и если он там есть, то она передаёт управление метке ext. Но проверяется лишь наличие первого слова в этом файле, и если есть слова, допустим на других строчках, или через пробел, то они не будут сравниваться, и вообще будут игнорироваться. Так вот, как сделать, чтобы текст проверялся во всём файле (если допустим, в нём есть более одной строчки, и нужный текст, находится, скажем, в 8-ой строчке, и начинается с 5-ятого её символа).
  • Почему команда: if exist file.txt del file.txt не выполняется, если у этого файла (file.txt) установлен аттрибут 'Скрытый'? -Хотя при этом, если вместо команды del file.txt, поставить что то другое, например, echo Hello World!, то она будет выполняться (т.е покажет Hello World!).
  • Почему иногда, нужно вместо одной команды pause, ставить две (иногда, в противном случае, одна команда pause не срабатывает). Я заметил, что это бывает, когда уже ранее стояла команда pause (в том же батнике, т,е когда она встречается в одном батнике дважды), и эта-вторая, как бы игнорируется, и происходит что то вроде слияния вместе с первой. Вот только не понятно почему, и как это избежать\наладить?
Ссылка на комментарий
Поделиться на другие сайты

CreatoR:

n - ответ не на вопрос о форматировании дискеты, а на вопрос, надо ли форматировать следующую. В случае чего, нетрудно будет подредактировать файл ответов. Конечно, его можно создавать и "на ходу" с помощью команды echo.

Команда del не стирает скрытые файлы. Она делает это с ключом /AH, но тогда не будут стираться нескрытые файлы, так что, возможно, придется использовать две команды для нескрытых и скрытых файлов.

Две команды pause - скорее всего, какой-то глюк в командном интерпретаторе, не думай, что всё в Microsoft было написано без ошибок. Иногда приходится обходить какие-то ошибки.

Для поиска, есть ли в файле указанная последовательность символов, есть команда find. Я использовал for, потому что хотел, чтобы проверялось именно первое слово в строке, для того чтобы путь, в котором встречается слово exit, не воспринимался как требование выхода из программы.

Справку по find можно посмотреть, как обычно, с ключом /?. С ключом /C она выдает число найденных вхождений заданного текста в файл, эта строка уже имеет довольно четкую структуру, которую можно потом проанализировать с помощью команды for.

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

я вот почитал топик, а не проще ли было бы поставить другой ком.процессор? Скажем тот, который есть в PC-DOS, он проще, удобнее и функциональнее.

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

Тролль:

n - ответ не на вопрос о форматировании дискеты, а на вопрос, надо ли форматировать следующую.

Тогда получается, что подтверждения не нужно?! :) или всё же мой вариант (в коде предыдущего моего поста) именно для этой цели (для форматирования дикеты без подтверждения)?

На счёт команды find, у меня что то не получается вывести в файл результат поиска :D . Или же как построить команду, которая в случае, если искомое слово в файле существует, будет переходить по метке (это впринципе и была суть моего вопроса).

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

CreatoR:

Подтверждение в команде format вводится просто нажатием клавиши Enter, оно уже есть в файле ответов. Ничего не нужно, только запустить файл, и находящаяся в дисководе дискета будет отформатирована без всяких запросов.

По вопросу о поиске в файле. Вот кусок батника, который будет искать в тексте в файле test.txt последовательность букв aaa и, если ее найдет, осуществит переход на метку y.

find /i /c "aaa" test.txt | find /c ": 0" > f.txt

for /f %%i in (f.txt) do if %%i==0 goto y

Идея в том, что первый find выдаст строку с числом вхождений, а второй будет искать в ней подстроку, показывающую, что вхождений было 0, и запишет в файл f.txt количество строк, в которых она была найдена. Поскольку первый find выдал всего одну строку, второй выдаст или 0 или 1. Если второй find выдал 1, значит, был 0 вхождений, если 0 - значит, вхождения были. Соответственно дальше идет переход на метку по сравнению содержимого файла f.txt с нулем.

На всякий случай прикладываю демонстрационный батник целиком. Он выдает Yes, если в файле test.txt содержится строка aaa, и No, если она не содержится.

t14.zip

t14.zip

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

Тролль:

По вопросу о поиске в файле. Вот кусок батника, который будет искать в тексте в файле test.txt последовательность букв aaa и, если ее найдет, осуществит переход на метку y.

find /i /c "aaa" test.txt | find /c ": 0" > f.txt

for /f %%i in (f.txt) do if %%i==0 goto y

Огромное тебе СПАСИБО!!! gentleman.gif

Это то что Мне и нужно было!

У меня тут 'завалялись' ещё пару вопросов :D - Надеюсь что я тебе ещё не надоел с ниии :D :

  • Существует ли где нибудь (в природе инета, и не только) список со всеми существующими командами, и ключами к ним, для командной строки и пакетного файла? Если да, то где его можно взять? (я имею ввиду полный список, т.к по кускам можно взять из справки которую ты посоветовал сделать через ярлык, и также можно узнавать значение команд в самой командной строке, а мне хотелось бы иметь целы список, где будут все существующие коанды и их ключи\значения).
  • Допустим я хочю поместить на флэшку, командный интерпритатор (чтобы постоянно носить ссобой все свойства командной строки, вне зависимости от того, повреждённые ли некоторые файлы касающиеся командного интерпритатора в системе, или нет), то какие утилиты, мне нужно копировать с системы, чтобы поместить их рядом с файлом cmd.exe на флэшку, и чтобы потом все команды, и свойства командной строки работали?
  • Этот вопрос, думаю лишний, но всё же моё любопытство превышает мой разум :D - Можно ли каким то образом, запускать батником окно, которое запускается виндоусом, когда из какой либо программы, пытаешся открыть файл (или то окно, которое вызывается по нажатию нопки 'Browse' или 'Обзор'). И чтобы можно было в нём (в окне) выбрать файл\папку, и данные на счёт того где он\а находится, будут переданы батнику, или точнее в файл, подобно тому, как выводится в файл текущий путь рабочего каталога батника, через команду cd > path.txt.
Ссылка на комментарий
Поделиться на другие сайты

CreatoR:

Существует ли где нибудь (в природе инета, и не только) список со всеми существующими командами, и ключами к ним, для командной строки и пакетного файла? Если да, то где его можно взять? (я имею ввиду полный список
Сто процентов гарантировать трудно, но довольно полный справочник Григория Саитова гуляет по Интернету, чаще всего разбитый на страницы, хотя бывает и в других видах. Прикладываю его в виде rtf, который я склеил из этих страниц.
какие утилиты, мне нужно копировать с системы, чтобы поместить их рядом с файлом cmd.exe на флэшку, и чтобы потом все команды, и свойства командной строки работали?
Список внутренних команд командного интерпретатора Windows (это те, которые командный интерпретатор выполняет самостоятельно) мне на глаза не попадался, в MS-DOS - другое дело. Да и смысла в них немного. Для полноценной работы с файловой системой мало командного интерпретатора и реализующих остальные используемые команды (т.н. внешние команды) утилит, надо еще и драйверы поддержки работы с длинными именами, с NTFS, с приводами CD/DVD... Короче, нужна примитивная операционная система. Такая в Windows есть, зовется консоль восстановления, она может устанавливаться отдельно от Windows или запускаться прямо с установочного диска Windows XP. Выполни в помощи Windows поиск по словам Recovery Console и найдешь информацию по ней. Есть и некоторые другие варианты вроде NTFS-DOS, но они более ограничены. Если исходить из того, что работа ведется с компьютером с неработающей Windows, то комфортнее всего использовать просто другую Windows XP, запускаемую прямо с CD или флэшки, есть такие ее варианты.
Можно ли каким то образом, запускать батником окно, которое запускается виндоусом, когда из какой либо программы, пытаешся открыть файл (или то окно, которое вызывается по нажатию нопки 'Browse' или 'Обзор').
Окно, которое запускается Windows'ом - результат работы API, то есть набора имеющихся в Windows готовых подпрограмм, обеспечивающих интерфейс с пользователем, это не самостоятельные программы, они рассчитаны на вызов только из других программ. Из пакетного файла их не запустишь. Можно применить какие-нибудь DOS'овские программы, в которых используется собственный оконный интерфейс, одной из первых таких программ был Norton Commander, возможно, более удобным будет его меньший брат Volkov Commander, хотя все они плохо отображают длинные имена, особенно Norton.
И чтобы можно было в нём (в окне) выбрать файл\папку, и данные на счёт того где он\а находится, будут переданы батнику, или точнее в файл
У коммандеров будет много лишних функций, но и тот и другой дают возможность задавать для файлов с заданными расширениями заданные действия типа вызова пакетного файла. Насколько удалось бы все это приспособить, заранее сказать трудно. Во всяком случае, это будет сильно напоминать работу левой рукой через правое плечо. Для задач с окнами выбора файлов и вообще с развитым интерфейсом с пользователем надо использовать современные языки программирования, а не изобретать велосипед. Медведя можно научить ездить на велосипеде, но надо ли и станет ли он большим мастером? :g: :)

Многое из того, что есть в арсенале пакетных файлов, было сделано на крайний случай, и поэтому хотя и есть, но неудобно для использования. В пакетные файлы даже сильно упрощенный язык C вмонтирован (в команду SET), который работает за неимением настоящих переменных с переменными окружения. Но все это - именно на тот случай, когда вообще-то нельзя, но поскольку очень хочется, то можно, но обвешано десятками ограничений, условностей и особенностей.

All_cmd.zip

All_cmd.zip

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

Тролль:

Прикладываю его в виде rtf, который я склеил из этих страниц.

Спасибо! Это почти то что я искал... :)

Для полноценной работы с файловой системой мало командного интерпретатора и реализующих остальные используемые команды (т.н. внешние команды) утилит, надо еще и драйверы поддержки работы с длинными именами, с NTFS, с приводами CD/DVD... Короче, нужна примитивная операционная система.

На счёт создания примитивной операционки, я вообще то имел ввиду, что на том компе, где я стал бы применять этот командный интерпритатор, не очень то так уж и нехватает всех необходимых утилит (драйверы поддержки работы с длинными именами, с NTFS, с приводами CD/DVD). Просто когда я спросил про то, какие мне нужно копировать утилиты, то имел ввиду, что не нужно чтобы прямо всё у меня было на флэшке, и чтобы можно было на чистом компе (от операционки) работать с командным интерпритатором (хотя было бы не плохо ;) ) -Просто иногда, сажусь за комп, где повреждены некоторые утилиты (такие как xcopy, format и им подобные), и хотел узнать, какие утилиты, при возможностях (и\или при имении) одного лишь виндоуса, можно скопировать на флэшку, и если на компе их вдруг не окажется, то они будут дополнятся теми что на флэшке.

Если исходить из того, что работа ведется с компьютером с неработающей Windows, то комфортнее всего использовать просто другую Windows XP, запускаемую прямо с CD или флэшки, есть такие ее варианты.

А ты случаем не знаешь где можно скачать такое творение? :)

Для задач с окнами выбора файлов и вообще с развитым интерфейсом с пользователем надо использовать современные языки программирования, а не изобретать велосипед

Ясно! :) Тогда вопрос такой:

*Можно как то создать скрипт vbs, который будет вызывать такое окно, и затем результат выбора, будет вписывать в текстовый файл? (чтобы с этого файла, можно было считывать результат, и использовать его батником). И ещё, также хотелось бы чтобы был такой скрипт, который вызывал бы окно, для указания только лишь каталога (не файла), и также чтобы записывал результат в текст-файл. Если такое возмоно, а также если тебе не трудно, подскажи плиз как это сделать... :rolleyes:

У меня тут ещё пару вопросов появилось... любопытство+надобность clever.gif :

  • Существует ли переменная, значение которой равняется каталогу 'Главное Меню'? :)
    В принципе, я знаю что такой переменной нет, но вопрос вот в чём: Ведь во многих инсталляторах, или даже в программах, существует опция помещения ярлыка, в каталог 'Главное меню'. Так вот, каким образом, эти программы распознают местонахождение этого каталога ('Главное меню'), ведь в виндоусе, может быть название этого каталога и другое, напрмер 'Start Menu'. Вопрос вот в чём - Как, и можно ли вообще, применить тот самы способ, который используют программы, для распознавания каталога Главного меню (%userprofile%\Главное меню), в батнике? Т.е, чтобы я мог также, указать путь (или переменную), с намериниями что нибудь скопировать в этом каталоге, но без тоого, чтобы нужно было указывать полное имя этого каталога ('Главное меню', или 'Start Menu').
  • Какая команда, выводит содержимое текст-файла на экран? Т.е, допустим, я хочю вывести на экран такую строчку: echo Hello world! How are you? тут ответ из текстового файла. Можно такое выполнить? :D
  • Как осуществить имитацию прогресса, в тот момент, пока батник выполняет сценарии, одна из команд которого, выполняется довольно долго. Т.е, чтобы во время выполнения этой-"долгой" команды, была видна, либо вертушка из таких символов: / \ | - (я такое уже встречал, когда создаются 6 загрузочных дискет с диска виндоуса, то во время прогресса, там видна такая вертушка - но думаю там используется не батник для этой цели.. :bye1:.), либо чтобы по одному добовлялся символ тире (-), в соответствии с уровнем прогресса, и в сопровождении знака процента с цифрами (Пример: %12 ------------).
  • Как можно сделать резервирование каталога (не отдельных файлов) в архив (zip, cab и т.д)? Я недавно услышал о такой команде: MAKECAB -Но она архивирует только файлы, а полностью папку не хочет, или я не знаю как. Хотя круг её возможностей (как мне кажется), очень мал.
  • Вопрос такой - Вот этой командой: for %%I in (..\folder1 ..\folder2) do xcopy /y "%%I" "c:\program files\backup\%%I" -Хотелось бы скопировать папки folder1 и folder2, в "c:\program files\backup". Но как ты понимаешь, таким образом, они скопируются в "c:\program files" -Просто мне нужно, чтобы они копировались одной командой, т.к после этой команды, должна стоять команда if errorlevel 1 echo there was a problem (что то в этом роде...). А там где ..\folder1 ..\folder2, так и должно быть, просто эти папки, относительно батнику, должны находиться на один уровень выше (т.е в родительском каталоге того каталога, в котором лежит батник :blushing: ).
  • Предыдущий вопрос, навёл меня на этот: команда Еrrorlevel, она действует только для последней-предыдущей команды (которая выполнялась перед этой), или же она немного подругому действует?
  • Вопрос касается утилиты rw.exe: Я запустил батник, который ею 'пользуется', на другом компе, и она отказалась работать. Т.е как будто её и нету вовсе рядом с батником. Что может вызвать такую проблему?
  • Можно ли совместить все утилиты что ты мне давал (ech.exe, rw.exe, col.exe, slash.exe) в одну, и чтобы в ней были все функции этих четырёх утилит? :) Надеюсь это не сложно для выполнения...
  • На счёт таких утилит, а может есть где то в инете, ещё подобные утилиты, которые идут в помощь командному интерпритатору?

P.S:

Надеюсь это не слишком много вопросов для одного поста....

Спасибо за внимание..... gentleman.gif

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

CreatoR:

А ты случаем не знаешь где можно скачать такое творение?
http://www.nu2.nu/pebuilder/
Можно как то создать скрипт vbs, который будет вызывать такое окно, и затем результат выбора, будет вписывать в текстовый файл? (чтобы с этого файла, можно было считывать результат, и использовать его батником). И ещё, также хотелось бы чтобы был такой скрипт, который вызывал бы окно, для указания только лишь каталога (не файла), и также чтобы записывал результат в текст-файл. Если такое возмоно, а также если тебе не трудно, подскажи плиз как это сделать...
- Это называется делать щи из топора (под топором имею в виду батник). Тогда уже и все остальное есть смысл писать на VB. С индикаторами времени выполнения, красивым оформлением и т.д.
Существует ли переменная, значение которой равняется каталогу 'Главное Меню'?

В принципе, я знаю что такой переменной нет, но вопрос вот в чём: Как, и можно ли вообще, применить тот самы способ, который используют программы, для распознавания каталога Главного меню (%userprofile%\Главное меню), в батнике?

Переменной, насколько я знаю, нет. Найти настоящее название этой папки в локализованных Windows можно через реестр, там оно есть, однако придется считывать это значение из реестра и вытаскивать его из полученной строки. Некоторые программы этого не делают и поэтому в локализованных Windows делают ошибки.
Какая команда, выводит содержимое текст-файла на экран? Т.е, допустим, я хочю вывести на экран такую строчку: echo Hello world! How are you? тут ответ из текстового файла. Можно такое выполнить?
COPY текст-файл CON

Или есть специальная команда TYPE текст-файл

Как осуществить имитацию прогресса, в тот момент, пока батник выполняет сценарии, одна из команд которого, выполняется довольно долго. Т.е, чтобы во время выполнения этой-"долгой" команды, была видна, либо вертушка из таких символов: / \ | - (я такое уже встречал, когда создаются 6 загрузочных дискет с диска виндоуса, то во время прогресса, там видна такая вертушка - но думаю там используется не батник для этой цели..
Откуда программа, крутящая палочку, будет знать, что другая программа закончила работу? Можно перед и после запуском программы, выполнение которой отслеживается, изменять значение какой-нибудь системной переменной... А крутящаяся палочка должна изменять свое положение через определенные интервалы времени, для этого нужен таймер... В общем, это опять же задача для нормального языка программирования. Пакетные файлы на интерфейс с пользователем не рассчитаны.

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

Как можно сделать резервирование каталога (не отдельных файлов) в архив (zip, cab и т.д)? Я недавно услышал о такой команде: MAKECAB -Но она архивирует только файлы, а полностью папку не хочет, или я не знаю как. Хотя круг её возможностей (как мне кажется), очень мал.
Практически любой хороший архиватор имеет вариант, работающий из командной строки. Например, PowerArchiver, версия для командной строки называется PowerArchiver Command Line.
Вопрос такой - Вот этой командой: for %%I in (..\folder1 ..\folder2) do xcopy /y "%%I" "c:\program files\backup\%%I" -Хотелось бы скопировать папки folder1 и folder2, в "c:\program files\backup". Но как ты понимаешь, таким образом, они скопируются в "c:\program files" -Просто мне нужно, чтобы они копировались одной командой, т.к после этой команды, должна стоять команда if errorlevel 1 echo there was a problem (что то в этом роде...). А там где ..\folder1 ..\folder2, так и должно быть, просто эти папки, относительно батнику, должны находиться на один уровень выше (т.е в родительском каталоге того каталога, в котором лежит батник (IMG:style_emoticons/default/blink.gif) ).
Как я понял задачу, это просто можно сделать в несколько шагов, после каждого проверяя errorlevel и, если он не 0, посылая на метку с сообщением об ошибке.
Предыдущий вопрос, навёл меня на этот: команда Еrrorlevel, она действует только для последней-предыдущей команды (которая выполнялась перед этой), или же она немного подругому действует?
Команда errorlevel читает переменную окружения errorlevel, которую устанавливают некоторые (не все) команды по результатам своего выполнения. Если текущая команда ее не устанавливала, сохранится старое значение.
Вопрос касается утилиты rw.exe: Я запустил батник, который ею 'пользуется', на другом компе, и она отказалась работать. Т.е как будто её и нету вовсе рядом с батником. Что может вызвать такую проблему?
- Это странно. А отдельно ты ее не пробовал запускать? Без перенаправлений ввода-вывода она должна копировать ввод с клавиатуры на экран.
Можно ли совместить все утилиты что ты мне давал (ech.exe, rw.exe, col.exe, slash.exe) в одну, и чтобы в ней были все функции этих четырёх утилит?
- Те две, которые я писал, можно, но зачем? Придется давать лишний параметр, чтобы объединенная утилита знала, что от нее нужно. ИМХО, удобнее иметь набор простых инструментов. Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

CreatoR:

Продолжаю в отдельном посте, а то появился какой-то глюк с выделением цитат.

На счёт таких утилит, а может есть где то в инете, ещё подобные утилиты, которые идут в помощь командному интерпритатору?
- Наверно, кто-нибудь, как и мы, писал, но я этим особо не интересовался. Посмотри многофункциональную утилиту командной строки Comandiux. Помню еще какой-то довольно примитивный пакет HS_Packet.
Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Спасибо!

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

А Как его найти в реестре, т.е что искать, я искал поиск по слову 'Главное меню', но нашёл этот текст в этом разделе: {4622AD11-FF23-11d0-8D34-00A0C90F2719}. Теперь, как его считывать из реестра, и как можно реализовать это при обращении к этому пути в батнике? Т.е, если это оно, то как я укажу это в батнике, просто как путь? Прямо этот путь нужно и вписывать? :)

COPY текст-файл CON

Или есть специальная команда TYPE текст-файл

Не, так не работает. Мне нужно чтобы текст, из текстового файла, появился внутри (после) текста в команде echo. Т.е вот так (к примеру):

echo hello CreatoR! type c.txt - Но это не работает, на экран выводится такое: hello CreatoR! type c.txt - А мне нужно, чтобы если допустим, в файле c.txt такое содержание: c:\program files, то чтобы выводилось это сообщение: hello CreatoR! c:\program files (при вводе примерно такой команды (к примеру): echo hello CreatoR! type c.txt).

Откуда программа, крутящая палочку, будет знать, что другая программа закончила работу?

А ей не нужно знать, можно просто потом указать команду для её выхода (после завершения команды copy. Т.е после команды copy, поставить команду вроде такой: krutilka.exe /exit). Кстати, может ты знаешь такую утилиту, которую я мог бы запустить батником (перед командой copy), и чтобы она (пусть даже вне окна командного интерпритатора), показывала просто такую крутящуюся палочку (как вертушка), или что то на подобее.

На счёт архиватора, мне нужнен либо маленьки по весу (PowerArchiver около 3-ёх mb), либо как то воспользоваться командой makecab, но чтобы в одной папке, одним махом (одной командой) запоковать все файлы. Или как то через команду for, во всех подкаталогах, сделать архивацию всех файлов, но чтобы после распаковки, они появились в тех папках, с которых они и архивировались.

Кстати, а как батником, я могу потом расспаковать этот (или любой другой, не cab - если возможно) архив?

Как я понял задачу, это просто можно сделать в несколько шагов, после каждого проверяя errorlevel и, если он не 0, посылая на метку с сообщением об ошибке.

Вопрос не в том как осуществить проверку errorlevel, мне нужно чтобы была одна команда, и после неё проверялся errorlevel. Но, но, чтобы я мог этой командой скопировать две папки, но в то место куда я указал ("c:\program files\backup"). - Но такой командой, как я привёл в пример в моём прошлом посте (for %%I in (..\folder1 ..\folder2) do xcopy /y "%%I" "c:\program files\backup\%%I"), скопируются эти папки в "c:\program files". Понимаешь, если я создам две команды, и под каждой из них будет стоять команда errorlevel, то пользователю предётся два раза нажимать на любую клавишу (ведь нужно для показа сообщения поставить pause), это естественно если будут две ошибки. Как такое решить? Как одной командой, скопировать две разные папки (с одного места), в другую папку, которую укажет потом пользователь (ну это не важно, т.к конечная папка всё ровно должна быть backup).

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

А как узнать, какие команды создают такую переменную, а какие нет? :D

- Это странно. А отдельно ты ее не пробовал запускать?

Попробовал, выдаёт такой текст: c:\program - (Буква диска меняется в зависимости от того на каком диске была запущена rw) - И вводить ничего не могу. Но замечю, что у меня на компе (на моём, не на том где проблема) такой проблемы нет, запускаю её, и всё ок, ввожу текст нормально, и нет никакого произвольного текста в окне...хм. :) ..мне и самому странно такое поведение этой утилиты... Думаю эта проблема на компе где я её запустил. Как ты думаешь, в чём проблема?

- Те две, которые я писал, можно, но зачем? Придется давать лишний параметр, чтобы объединенная утилита знала, что от нее нужно

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

И ещё, а какие это утилиты? slash и rw? Тогда можно будет использовать с этой-совмещённой утилитой, функции трёх утилит - убирание перевода строки, подавление необходимости в вводе F6 и затем ENTER, и перенаправление слэша (знака \) в противоположную сторону.

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

CreatoR: тема-то какая интересная! Молодец!

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

Может чего-то посоветуешь? :doh:

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

snejinka:

CreatoR: тема-то какая интересная! Молодец!

Спасибо! Но думаю тут кредит по большей части заслуживает Тролль!

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

А какую программу не получается открыть? Хотя думаю это не связанно с командной строкой.

А на счёт Ipconfig, ты его запускаешь с командной строки, или с 'Пуск' -> 'Выплонить' и вписываешь ipconfig? -Потому как через 'выполнить', она запустится, и сразу исчезнет, так как она расчитана на запуск с командной строки (подобно тому, как ты запустишь утилиту xcopy с 'выполнить', она на секунду появится, и исчезнет, так как нету ничего, чтобы её удерживало, и нету параметров которые должны быть для выполнения данной команды).

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

Тролль:

На счёт вывода текста на экран, я решил эту проблему так:

echo Hello CreatoR! | rw & type c.txt

И затем, если есть ещё команда после этой, результат которой будет выведен на экран, то чтобы результат (например последствие команды pause) на экране, не появился в той же строке, нужно чтобы команда(ы) выглыдела так:

echo Hello CreatoR! | rw & type c.txtecho.Тут команда, последствие которой, должный быть выведенны на экран, но на другой строчке.

P.S:

Хм..:) странно, а почему создался отдельный пост...? вроде бы должно добовляться к предыдущему.

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

CreatoR:

Но думаю тут кредит по большей части заслуживает Тролль

Да уж ... мне кажется нереальным сам факт, что он так много знает и самое главное с терпением и так понятно все объясняет. :(

А на счёт Ipconfig, ты его запускаешь с командной строки, или с 'Пуск' -> 'Выплонить' и вписываешь ipconfig

Да, через пуск - выполнить, что-то я от жары плохо коннектить стала , а как надо-то :)?

А какую программу не получается открыть?

слушай, у меня рука не поднимается написать что за программа, слишком у неё репутация специфичная. :)

Но я думаю, что там тот же принцип не срабатывает , что и с Ipconfig, объясни пожалуйста для тех , кто в танке, а...? :)

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

snejinka

Через пуск - выполнить набираешь cmd, а потом уже ipconfig. И ничего не исчезает. :)

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

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

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



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