Как найти каталог bat файлом

I need some help in writing a batch file.
I have a path stored in a variable root as follows:

set root=D:WorkRoot

Then I am changing my working directory to this root as follows:

cd %root%

When I execute this batch file from anywhere on the D drive this is done successfully. But when I execute the same batch file from some other drive, cd %root% doesn’t work.

Is there a way I can get the drive letter from the root variable? I can then change the current directory to this drive first and then cd %root% shall work.

bubble's user avatar

bubble

3,3685 gold badges29 silver badges51 bronze badges

asked Feb 28, 2011 at 5:24

Ananya's user avatar

Specify /D to change the drive also.

CD /D %root%

answered Feb 28, 2011 at 5:27

Andriy M's user avatar

Andriy MAndriy M

75.6k17 gold badges94 silver badges152 bronze badges

3

Just use cd /d %root% to switch driver letters and change directories.

Alternatively, use pushd %root% to switch drive letters when changing directories as well as storing the previous directory on a stack so you can use popd to switch back.

Note that pushd will also allow you to change directories to a network share. It will actually map a network drive for you, then unmap it when you execute the popd for that directory.

answered Feb 28, 2011 at 5:26

Gabe's user avatar

GabeGabe

84.5k12 gold badges139 silver badges236 bronze badges

Try this

chdir /d D:WorkRoot

Ryan M's user avatar

Ryan M

17.8k31 gold badges64 silver badges73 bronze badges

answered Sep 12, 2014 at 12:07

stingray_'s user avatar

stingray_stingray_

5645 silver badges13 bronze badges

2

A simpler syntax might be

pushd %root%

answered Jul 15, 2019 at 15:51

NapkinBob's user avatar

NapkinBobNapkinBob

6327 silver badges19 bronze badges

0

In my batch file I needed to :

  1. Change dir to other directory
  2. run commands in bat file — do some work in that directory
  3. change back to my original directory

pushd solved this with the help of popd

bat file example

pushd <my-working-directory>
do command
do other command
...

popd 

popd moved me back to original directory.

answered Feb 1, 2022 at 21:54

raddevus's user avatar

raddevusraddevus

8,1697 gold badges64 silver badges82 bronze badges

2015-03-30: Edited – Missing information has been added

To retrieve the current directory you can use the dynamic %cd% variable that holds the current active directory

set "curpath=%cd%"

This generates a value with a ending backslash for the root directory, and without a backslash for the rest of directories. You can force and ending backslash for any directory with

for %%a in ("%cd%") do set "curpath=%%~fa"

Or you can use another dynamic variable: %__CD__% that will return the current active directory with an ending backslash.

Also, remember the %cd% variable can have a value directly assigned. In this case, the value returned will not be the current directory, but the assigned value. You can prevent this with a reference to the current directory

for %%a in (".") do set "curpath=%%~fa"

Up to windows XP, the %__CD__% variable has the same behaviour. It can be overwritten by the user, but at least from windows 7 (i can’t test it on Vista), any change to the %__CD__% is allowed but when the variable is read, the changed value is ignored and the correct current active directory is retrieved (note: the changed value is still visible using the set command).

BUT all the previous codes will return the current active directory, not the directory where the batch file is stored.

set "curpath=%~dp0"

It will return the directory where the batch file is stored, with an ending backslash.

BUT this will fail if in the batch file the shift command has been used

shift
echo %~dp0

As the arguments to the batch file has been shifted, the %0 reference to the current batch file is lost.

To prevent this, you can retrieve the reference to the batch file before any shifting, or change the syntax to shift /1 to ensure the shift operation will start at the first argument, not affecting the reference to the batch file. If you can not use any of this options, you can retrieve the reference to the current batch file in a call to a subroutine

@echo off
    setlocal enableextensions

    rem Destroy batch file reference
    shift
    echo batch folder is "%~dp0"

    rem Call the subroutine to get the batch folder 
    call :getBatchFolder batchFolder
    echo batch folder is "%batchFolder%"

    exit /b

:getBatchFolder returnVar
    set "%~1=%~dp0" & exit /b

This approach can also be necessary if when invoked the batch file name is quoted and a full reference is not used (read here).

Dier_Sergio_Great

set papka = %cd%
echo %papka%
pause

Выводит путь C:Windowssystem32
Но ведь BATник я запускаю на рабочем столе.
Как узнать текущий путь?


  • Вопрос задан

    20 июн. 2022

  • 2883 просмотра

Именно так и узнавать текущий путь: %CD%
Это не важно где лежит батник, т.к. исполняется не сам батник, а cmd.exe. Т.е. когда вы 2ПКМите на батнике, лежащем на раб.столе запускается команда: cmd.exe /c c:usersuserDesktopfile.bat
При этом путь где лежит батник никакого отношения к текущему пути не имеет. cmd.exe обычно запускается с текущим каталогом %SystemRoot%System32.
Чтоб перейти в каталог, где лежит батник, используйте команду: cd /d "%~dp0"
Пути можно получать из параметров батника, указанным способом, то же самое можно делать для переменных цикла, и параметров процедур. Список доступных модификаторов (буквы после %~ доступны в описании команд call и for.

Пригласить эксперта

команда ls, или же через проводник


  • Показать ещё
    Загружается…

24 мая 2023, в 10:07

3000 руб./за проект

24 мая 2023, в 09:29

6000 руб./за проект

24 мая 2023, в 09:07

900 руб./в час

Минуточку внимания

0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

1

Найти файл и папку

09.07.2014, 18:04. Показов 8628. Ответов 25


Студворк — интернет-сервис помощи студентам

Люди добрые, вопрос такой. Крик о помощи!

Допустим есть файл 777.exe, где-то на диске С: и в какой-то папки
Нужно первой командой на диске найти файл 777.exe допустим он нашел его C:/pilot/777.exe
Создать папку C:/OLD в нее переместить папку “pilot” с файлами.
Создать папку с именем ( в данном случае pilot , имя той папки в которой нашли файл 777.exe ) в туже директорию , где первоначально она и была! ( в данном случае C:/ ) – “Если файл нашли в C:/1/2/3/4/pilot/777.exe то и новую папку с именем pilot нужно создать в C:/1/2/3/4/ ” и переместить туда файлы с флешки и делать именно из нее запуск файлов и регистрацию допустим .dll



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.07.2014, 18:04

Ответы с готовыми решениями:

Найти файл, и в папку где лежит этот файл скопировать другой файл)
Задача описана в названии, но повторюсь.
Надо найти папку с известным названием файла (123.txt),…

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

Как bat-ником перенести файл в папку, при том так чтобы это было не копирование файла в папку?
Не копия файла в папке, а сам файл.
Этот код копирует файлы и переносит в папку Copy, а мне нужно…

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

25

Эксперт WindowsАвтор FAQ

18041 / 7644 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

09.07.2014, 19:23

2

Че это, очередная мегавирусяка?



0



Модератор

4909 / 1965 / 384

Регистрация: 06.01.2013

Сообщений: 4,651

09.07.2014, 19:26

3

Цитата
Сообщение от expressq12
Посмотреть сообщение

и переместить туда файлы с флешки и делать именно из нее запуск файлов и регистрацию допустим .dll

А теперь этот же отрывок, только человеческим языком опишите. Конкретнее: что откуда и куда нужно запускать. А также – при каких условиях.



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

09.07.2014, 19:28

 [ТС]

4

Совсем нет.
Это по работе, чаще всего у нас папка с именем dv665 в директории С , но иногда бывает что кассовое ПО настроено под определенную папку где и прописана кассовая библиотека .dll если я создам батником стандартную папку она просто работать не будет т.к. касса ее не увидит. Вот и нужно чтобы батник нашел наш файл с их папкой. И сделал манипуляции , что описаны выше!



0



Модератор

4909 / 1965 / 384

Регистрация: 06.01.2013

Сообщений: 4,651

09.07.2014, 19:33

5

expressq12, так все равно ТЗ не понятно. Все настолько сумбурно описано.



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

09.07.2014, 19:39

 [ТС]

6

FraidZZ,
на флешки диск “Е” папка AD/810/dv665 там лежат файлы которые нужно перенести в созданную ( пустую папку , с идентичным именем которую мы переместили в папку OLD)
Запустить файлы уже непосредственно в папке ( не с флешки ) куда мы переместили НОВЫЕ файлы. допустим
regsvr32 %%%%%/pilot/gkrc.dll
regsvr32 %%%%%/pilot/gkrcru.dll
%%%%%/pilot/driver/setup.exe
pause (дождаться установки драйвера)
и.т.д

Добавлено через 6 минут
FraidZZ,
1. Найти файл 777.exe на диске С
2. Папку в которой лежит файл 777.exe вырезать и переместить в директорию С:/OLD ( создав папку OLD )
3. Создать папку с идентичным именем, что и в папке OLD и на то место где изначально она находилась ( откуда мы ее и вырезали )
4. С флеш-накопителя , диск “Е” – E:/AD/810/dv665 скопировать все файлы и переместить их в пункт 3
5. Зарегистрировать библиотеки из папки ( пункт 3 )
6. Запустить драйвер из папки ( пункт 3 )
7. Перезагрузить ПК



0



Eva Rosalene

Модератор

4909 / 1965 / 384

Регистрация: 06.01.2013

Сообщений: 4,651

09.07.2014, 19:41

7

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
::Файл запускать с корня флешки!
pushd C:
for /R %%A IN ("777.exe") DO (set "dir=%%~dpA" & goto out)
:out
popd
md "C:OLD" >nul 2>nul
move "%dir:~0,-1%" "C:OLD" >nul &:: " <- Для подсветки синтаксиса форумом
md "%dir:~0,-1%"
copy "AD810dv665*" "%dir%"
cd /d "%dir%"
::Ниже пропишите все действия, которые надо сделать в папке, где был найден 777.exe
regsrv gkrc.dll
regsrv gkrcru.dll
start driversetup.exe
echo.Когда драйвер будет установлен, нажмите любую клавишу.
pause>nul
shutdown /r /t 0
exit /b



0



expressq12

0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

09.07.2014, 21:19

 [ТС]

8

FraidZZ,
вообще 0 эмоций. Просто открывается окно и все!

Добавлено через 4 минуты
FraidZZ,
Вооотт смотри что он сделал, он создал папку OLD и перекинул файлы с флешки ( без внутренних папок и подпапок ) в С:/
и пишет что не удается найти файл!

Добавлено через 1 минуту
FraidZZ,
а файл находится C:pilot_nt и имя его сейчас sb_kernel.dll

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
::Файл запускать с корня флешки!
pushd C:
for /R %%A IN ("sb_kernel.dll") DO (set "dir=%%~dpA" & goto out)
:out
popd
md "C:OLD" >nul 2>nul
move "%dir:~0,-1%" "C:OLD" >nul &:: " <- Для подсветки синтаксиса форумом
md "%dir:~0,-1%"
copy "AD810dv665*" "%dir%"
cd /d "%dir%"
::Ниже пропишите все действия, которые надо сделать в папке, где был найден 777.exe
regsrv gkrc.dll
regsrv gkrcru.dll
start driversetup.exe
echo.Когда драйвер будет установлен, нажмите любую клавишу.
pause>nul
exit /b

Добавлено через 39 минут
FraidZZ, Решил вопрос с копирование всех файлов с папками
xcopy /s /e “AD810dv665*” “%dir%”

Добавлено через 34 минуты
FraidZZ,
в самом начале батника пишет
Не удается найти указанный файл
Отказано в доступе
копируетт файлы
*
*
*
*
*

Добавлено через 1 минуту
FraidZZ,
Не загружались библиотеки , переписал

Bash
1
2
3
4
5
6
7
::Ниже пропишите все действия, которые надо сделать в папке, где был найден 777.exe
start regsvr32 234.dll
start regsvr32 23423.dll
start driversetup.exe
echo.Когда драйвер будет установлен, нажмите любую клавишу.
pause>nul
exit /b



0



Eva Rosalene

Модератор

4909 / 1965 / 384

Регистрация: 06.01.2013

Сообщений: 4,651

09.07.2014, 23:41

9

expressq12, попробуйте так

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
::Файл запускать с корня флешки!
pushd C:
for /R %%A IN ("sb_kernel.dll") DO (set "dir=%%~dpA" & goto out)
:out
popd
md "C:OLD" >nul 2>nul
move "%dir:~0,-1%" "C:OLD" >nul
::" 
md "%dir:~0,-1%"
xcopy /s /e "AD810dv665*" "%dir%"
cd /d "%dir%"
::Ниже пропишите все действия, которые надо сделать в папке, где был найден 777.exe
regsvr32 gkrc.dll
regsvr32 gkrcru.dll
start driversetup.exe
echo.Когда драйвер будет установлен, нажмите любую клавишу.
pause>nul
exit /b



0



expressq12

0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

10.07.2014, 08:01

 [ТС]

10

FraidZZ,
в самом начале батника пишет
Не удается найти указанный файл
Отказано в доступе
копируетт файлы
*
*
*
*
*
добавляет библиотеки
запускает драйвер

______________
в корне С:/ создает пустую папку OLD
Все Файлы с флешки кидает в корень С:/ и регит там же библиотеки и запускает драва

Добавлено через 3 часа 0 минут
FraidZZ,
Нашел)))
for /r %%A in (*LoadParm.exe) вот что надо!!!
Спасибо тебе за помощь!

Добавлено через 4 часа 22 минуты
Не минуты не спал, ломаю голову.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
echo.Search...LoadParm.exe
pushd c:
for /r %%A in (*LoadParm.exe) do (set "dir=%%~dpA" & goto out)
:out
popd
md "c:OLD" >nul 2>nul
move "%dir:~0,-1%" "c:OLD" >nul
::" 
md "%dir:~0,-1%"
xcopy /s /e "E:AutoDownloadWindowsADWvx805sc552*" "%dir%"
cd /d "%dir%"
reg add HKCUSoftwareMicrosoftWindowsCurrentVersionRunOnce /v "myAutoRun" /d "AD2.bat" /f
start regsvr32 SBRF.dll
start regsvr32 SBRFCOM.dll
start /wait driversetup.exe
shutdown /r /t 0
exit /b

Делает все что мне нужно, но не грузит AD2.bat в автозагрузку ( нужно что бы он 1 раз появился после перезагрузки этого bat файла и все )

Что делать?((

Добавлено через 46 минут
FraidZZ,

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
echo.Search...LoadParm.exe
pushd c:
for /r %%A in (*LoadParm.exe) do (set "dir=%%~dpA" & goto out)
:out
popd
md "c:OLD" >nul 2>nul
move "%dir:~0,-1%" "c:OLD" >nul
::" 
md "%dir:~0,-1%"
xcopy /s /e "E:AutoDownloadWindowsADWvx805sc552*" "%dir%"
cd /d "%dir%"
reg add HKCUSoftwareMicrosoftWindowsCurrentVersionRunOnce /v "LoadParm.exe" /d "AD2.bat" /f     -  не добавляется в автозагр.
start regsvr32 SBRF.dll
start regsvr32 SBRFCOM.dll
start /wait driversetup.exe
exit /b

Как сделать?
Если bat файл не нашел файл LoadParm , то нужно выполнить другие команды:

Bash
1
2
3
4
5
6
7
8
rd C:sc552
xcopy /s /e E:AutoDownloadWindowsADWvx805sc552 C:sc552
start regsvr32 C:sc552sbrf.dll
start regsvr32 C:sc552SBRFCOM.dll
start /wait C:sc552Driversetup.exe
reg add HKCUSoftwareMicrosoftWindowsCurrentVersionRunOnce /v "myAutoRun" /d C:sc552AD2.bat /f     - добавляется в автозагр.
shutdown.exe -r -f -t 00 
exit /b

?????????????



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

11.07.2014, 14:47

 [ТС]

11

И все молчат ((



0



Эксперт WindowsАвтор FAQ

18041 / 7644 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

11.07.2014, 15:19

12

Здравствуйте, expressq12 !!!

Дело в том, что перед тем как делать манипуляции по перемещению файлов, нужно:

– завершить работу все процессов, работающих с той папки
– снять регистрацию всех библиотек той папки.

У меня вопрос: если это будет делаться в автоматическом режиме,
то у Вас там ничего не рухнет в процессе автозакрытия процессов?

Спрашиваю, т.к. вся ответственность будет лежать на Вас в этом случае.



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

11.07.2014, 15:26

 [ТС]

13

Dragokas,
Все процессы до запуска bat файла закрываются, но про библиотеки я не понял. Разве библиотеки слетают с этой папки прописанные допустим для кассового ПО.



0



Dragokas

Эксперт WindowsАвтор FAQ

18041 / 7644 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

11.07.2014, 15:33

14

Библиотеки нельзя перемещать, пока они используются системой, поэтому нужно снимать регистрацию сначала:

Bash
1
regsvr32 /u "имя библиотеки"

Ок.
Испытуемый ПК перед Вами?
Давайте немного оптимизируем Ваш алгоритм.
Будем брать путь к файлу из реестра.

Скажите, каким образом запускается ПО – вручную или автозапуском во время старта ОС ?



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

11.07.2014, 15:37

 [ТС]

15

Dragokas, и вручную и автозапуском ))
Формат работы такой:
Приходишь видишь ПК. Закрываешь все программы, заходишь под уч.зап. Администратора. Вставляешь Flash-карту!



0



Эксперт WindowsАвтор FAQ

18041 / 7644 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

11.07.2014, 15:45

16

Хорошо. Тогда будем ориентироваться, что из автозапуска программу не будут удалять.

Зайдите в редактор реестра: Win + R и набрать regedt32
Правка найти: введите полный путь к файлу автозапуска Вашего ПО.
Этот путь можно найти, открыв свойства ярлыка ПО во вкладке “Ярлык”, поле “Объект”

Нужно искать только эту часть без кавычек, например: C:1234pilot777.exe

____________________
Если не найдет, ищите только по имени файла 777.exe

Как найдете, нажмите Файл, экспорт, любое имя файла.
Файл упакуйте в арихив zip и пришлите сюда, либо в целях конфиденциальности, можно мне в личку.



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

11.07.2014, 15:50

 [ТС]

17

Dragokas, с удовольствием но я Дома) Можно обойтись без реестра?



0



Dragokas

Эксперт WindowsАвтор FAQ

18041 / 7644 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

11.07.2014, 15:51

18

______
Или еще проще:
заупстите командную строку (Win + R введите cmd и нажмите ENTER)
Скопируйте и вставьте в ком. строку с подтверждением ENTER каждую из этих строк:

Bash
1
2
3
reg query hkcusoftwaremicrosoftwindowscurrentversionrun /s > "auto.txt"
reg query hklmsoftwaremicrosoftwindowscurrentversionrun /s >> "auto.txt"
explorer .

Откроется окно.
Заархивируйте файл auto.txt и пришлите сюда.

Добавлено через 1 минуту

Цитата
Сообщение от expressq12
Посмотреть сообщение

Dragokas, с удовольствием но я Дома) Можно обойтись без реестра?

Ок. Давайте попробуем без него.
Но поиск будет длиться довольно долго.
Хотя я могу попробовать написать особые ограничения, чтобы не заходило в папку Windows.



0



0 / 0 / 0

Регистрация: 27.06.2014

Сообщений: 16

11.07.2014, 15:53

 [ТС]

19

Dragokas, давай скайп , я не понимаю что ты говоришь)



0



Эксперт WindowsАвтор FAQ

18041 / 7644 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

11.07.2014, 15:56

20

Буква флешки может оказаться разная.
Батник запускается с флешки?
Как батнику найти расположение нужной папки на флешке с файлами для замены?
Где батник расположен относительно них?



0



1. Командная строка Windows

1. Командная строка Windows

В данном разделе мы познакомимся с возможностями командной строки операционной системы Microsoft Windows на примере часто используемых команд.

Студентам предстоит освоить следующие навыки:

работа с файловой системой в командной строке;

создание архивных и пакетных файлов;

настройка переменных среды окружения.

На защите лабораторной работы студент должен уметь выполнять любое задание и объяснять смысл выполненной команды.

Основные понятия

Интерфейс операционной системы (ОС) — это средство общения пользователя с ОС. С помощью интерфейса пользователь обращается к различным функциям ОС, таким как запуск программ или копирование файлов, и получает сообщения ОС.

Командная строка — это интерфейс ОС, работающий в текстовом режиме следующим образом:

— ОС выводит на экран приглашение;

— пользователь вводит команду и нажимает [Enter];

— ОС выводит результаты на экран.

Приглашение к вводу команд содержит имя диска и текущий каталог, например:

C:UserValentin>

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

dir /b *.txt

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

Команды ОС, например dir, выполняет сама ОС, поэтому на диске нет отдельных файлов для каждой команды, например dir. exe. К исполняемым файлам относятся прикладные программы (приложения) *.com и *.exe, а также пакетные файлы *.bat и *.cmd. Пакетные файлы — это текстовые файлы, содержащие последовательность команд ОС.

Регистр букв. Команды можно вводить и заглавными (большими) и строчными (маленькими) буквами — командной строке Windows это будет понятно: CD, cd, Cd, cD, см. рис.

Рис. Одна команда в разном регистре

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

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

Рис. Квадратные скобки не используем!

Квадратные скобки — это первая проверка внимательности и понимания. Если студент читает справку по команде и потом вводит квадратные скобки, значит он ничего не понял. И таких студентов с каждым годом встречается всё больше.

На самом деле в процессе обучения в вузе мы тренируем студентов читать и понимать прочитанное. В школе от учеников требуется только скорость чтения и ответов. А здесь мы требуем понимание. Придётся использовать голову не только для еды, но и для обучения.

Задание

Найдите в Википедии сведения про регистр букв и чувствительность к регистру символов.

Запуск командной строки

Командную строку можно запустить разными способами:

1) через главное меню Пуск:

Start — Windows System — Command Prompt

2) через поле поиска:

Type here to search — cmd — Command Prompt

4) с помощью «горячих клавиш»:

нажмите комбинацию клавиш [Win + R] — Run — cmd — [OK] или [Enter], см. рис.

Рис. Запуск командной строки

Окно командной строки содержит приглашение, содержащее полный путь к текущему каталогу. Мигающий курсор указывает место для ввода следующей команды, см. рис. Чтобы просмотреть предысторию, можно использовать полосу прокрутки.

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

Чтобы закрыть командное окно, нажмите кнопку [x] в правом верхнем углу окна либо введите на клавиатуре команду exit — «выйти». В переводе эта команда могла бы звучать так: «Закройте это окно!»

Рис. Окно командной строки

Задание

— Запустите командную строку описанными способами.

— Настройте размер шрифта и цвет текста и фона.

— Введите команду ver и нажмите [Enter].

— Запишите версию ОС.

— Найдите в командном окне все элементы интерфейса:

— — Приглашение

— — Мигающий курсор

— — Команду

— — Ответ ОС

— — Полосу прокрутки

— Закройте командное окно.

Справочная система

Команда help выводит на экран описание указанной команды. Например, чтобы изучить команду dir, нужно ввести команду:

help dir

Длинный текст справки выводится на экран постранично.

Некоторые команды и программы сами могут выводить справку при указании вопросительного знака в качестве параметра:

dir /?

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

dir [диск: ]

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

dir

dir c:

dir d:

Задание

Вызовите справку для команды dir описанными выше способами.

История ввода команд

Все команды, введенные течение текущего сеанса работы командного окна, сохраняются в памяти. Их можно вернуть стрелками [Вниз] и [Вверх] и снова выполнить.

Содержимое командной строки можно редактировать клавишами [Влево], [Вправо], [Home], [End], [Del], [BackSpace].

Клавиша [Backspace] находится на клавиатуре над клавишей [Enter]. Эта клавиша удаляет символ слева от курсора.

Английское слово backspace означает «вернуться на одну позицию назад». Эта клавиша была ещё на печатных машинках, см. рис. Тогда она просто передвигала печатающую головку на один символ влево. Русское название — «Забой». Можно было вернуться и напечатать другую букву поверх первой — если надо было исправить ошибку — то есть «забить» одну букву другой, перепечатать символ. А теперь на компьютере это ещё и стирание символа слева от курсора — с той же целью — исправить опечатку.

Обратите внимание на расположение букв на клавишах печатной машинки и на компьютерной клавиатуре. И для этого есть причина. В центре расположены буквы, которые встречаются чаще всего — чтобы не приходилось далеко передвигать пальцы при печати. Ближе к краям находятся более редкие буквы.

Клавиша «Забой» тоже осталась на своём привычном месте.

Рис. Клавиша «Забой» на печатающей машинке

Клавиша [Del] удаляет символ справа от курсора.

Для полного удаления текущей команды нажмите [Esc].

Задание

— Используя клавиши [Up] и [Down], просмотрите историю ввода.

— Верните команду help dir

— Отредактируйте команду, чтобы получить help help

— Нажмите [Enter]

— Верните предыдущую команду

— Нажмите [Esc]

— Прочитайте описание [Backspace] на Википедии

Команда DIR

Для просмотра содержимого каталога используется команда dir. Английское слово directory переводится как «каталог, папка, директория».

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

Каталоги помечаются символами <DIR>.

Примеры использования команды:

dir /b — вывод только названий файлов

dir /d — вывод списка в несколько колонок

dir /oe-s — отсортированный по расширениям список имен каталогов и файлов, а среди них — сортировка от больших файлов к меньшим.

Рис. Содержимое каталога

Задание

— Введите следующие команды:

dir

dir c:

dir /b c:

— Обратите внимание на результаты выполнения команд

— Вызовите справку для команды dir

— Выведите на экран список файлов и каталогов диска D:, отсортированных по расширению в обратном алфавитном порядке;

— Выведите на экран список файлов и каталогов диска D:, отсортированных по дате — от ранних к поздним

— Выведите на экран список файлов и каталогов диска D:, сгруппировав каталоги после файлов

— Выведите на экран в алфавитном порядке имена скрытых файлов

— Выведите на экран в алфавитном порядке имена системных файлов

Команда CD

Для перехода из каталога в каталог используют команду cd. Это сокращение от английских слов Change Directory — «смените каталог».

Как и многие другие команды ОС, это выражение действительно звучит как команда в армии: «Рядовой Петров, смените каталог!»

Команда cd без параметров выводит имена текущего диска и папки.

Примеры использования команды:

cd c:tmp — переход в каталог c:tmp из любого каталога диска c:

cd /d c:tmp — переход в каталог c:tmp из любого каталога любого диска

cd tmp — переход в подкаталог tmp, расположенный в текущем каталоге

cd.. — переход на один уровень выше по дереву файлов

cd — переход в корневой каталог текущего диска

d: — переход на диск D:

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

В приглашении ОС каждый раз после выполнения любой команды выводится имя текущего диска и каталога — если не изменить настройки командной строки.

Задание

— Вызовите справку для команды cd

— Обратите внимание на использование кавычек в команде cd

— Используя команды cd и dir, переходите вверх и вниз по файловому дереву диска с:

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

— Установите текущий диск d:

— Переходите вверх и вниз по файловому дереву диска d:

— Перейдите в каталог C:Program Files с одновременной сменой диска и каталога

— Перейдите в корневой каталог

Команда TREE

Команда tree выводит на экран схематичное изображение дерева каталогов. Английское слово Tree означает «дерево», а также «забраться на дерево». В нашем случае это слово означает «вывести на экран схему дерева файловой системы».

Если не указаны диск или путь, на экран выводится часть дерева, начиная с текущего каталога.

Чтобы прервать вывод на экран, нажмите сочетание клавиш [Ctrl + C].

Примеры:

tree — вывод дерева каталогов всего диска C:

tree c: /f more — постраничный вывод дерева диска C:

Задание

— Вызовите справку для команды tree

— Введите команду tree

— Введите команду tree и нажмите [Ctrl + C]

— Введите команду tree с постраничным выводом

— Сделайте зарисовку части дерева диска C:, начиная с корневого каталога

Команда SET

Команда set (англ. Set — «установите значение, задайте состояние, настройте») позволяет просматривать и изменять переменные (параметры) среды окружения (англ. Environment variables — «переменные окружения»). Имеется в виду среда выполнения программ.

Переменные окружения — это настройки ОС, доступные для прикладных программ в виде текстовых строк в оперативной памяти. Их также называют так: set-параметры.

К переменным окружения обращаются по имени.

Команда set без параметров выводит текущие значения переменных среды окружения, см. рис.

Вот некоторые примеры переменных окружения:

HOMEDRIVE — диск, на котором находится домашний каталог

HOMEPATH — путь к домашнему каталогу

NUMBER_OF_PROCESSORS — число логических процессоров, то есть процессоров, ядер и т. п.

OS — операционная система или семейство ОС

PATH — путь поиска исполняемых файлов

PROMPT — формат приглашения командной строки

USERNAME — имя пользователя

Рис. Параметры окружения

Для обращения к значению переменной окружения используют символ процента. Например, %os% — значение переменной os.

Примеры:

set path=C:Temp;%path% — добавление каталога C:Temp в путь поиска

echo %os% — вывод на экран значения переменной OS

Задание

— Выведите полный список переменных окружения

— Определите число «процессоров»

— Определите тип операционной системы

— Выясните в Википедии, что такое Windows NT

— Определите имя пользователя

— Выведите путь для поиска

— Добавьте каталог d: в путь для поиска

— Выведите путь для поиска

— Выведите полный список переменных окружения

— Убедитесь, что значение переменной path изменилось

Команда PATH

Команда path (англ. Path — «путь») устанавливает путь для поиска исполняемых файлов. Если при запуске приложения полный путь к файлу не указан, ОС пытается найти исполняемый файл в текущем каталоге, а затем просматривает пути к каталогам из заранее заданного списка path.

Список путей для поиска хранится в переменной среды окружения PATH. Для просмотра списка путей используется команда path без параметров.

Примеры:

path — выводит список путей

path c:usr; d:bin — задание двух путей для поиска

path %path%; d:s — добавляет каталог d:s к пути поиска

Изменение set-параметров из командной строки действует только для текущего командного окна. После изменения путей для поиска ОС не сможет выполнять некоторые команды. Для восстановления работоспособности закройте текущее командное окно и откройте новое.

Задание

— Выведите список путей поиска

— Добавьте каталог c:1 в список путей

— Выведите список путей поиска

— Убедитесь, что каталог добавлен в список

Создание файлов

Обычно системный администратор ограничивает права рядового пользователя — чтобы тот не испортил работающую систему.

Например, пользователю могут запретить создание файлов в корневом каталоге диска c:. Рекомендуется проводить опыты с файлами на другом диске в своём каталоге, например d:sidorov.

Для создания текстовых файлов в командной строке можно использовать два способа.

Способ 1. Копирование ввода с клавиатуры в файл:

copy con file. txt

При выполнении этой команды данные с клавиатуры записываются в указанный файл. Для завершения ввода текста нажмите комбинацию [Ctrl + Z], а затем [Enter].

con (англ. Console — «Консоль») — устройство стандартного ввода-вывода информации. «Стандартный ввод» выполняется с клавиатуры, а «стандартный вывод» — на экран.

Способ 2. Перенаправление стандартного вывода:

echo текст> file. txt

Команда echo (англ. Echo — «эхо») выводит текст, напечатанный после команды, на экран.

Символ «больше» направляет вывод вместо экрана в файл. В результате, при выполнении этой команды будет создан файл file. txt, который будет содержать в себе текст, напечатанный после команды echo.

Задание

— Просмотрите в Википедии статью Консоль, которая относится к компьютерам

— Создайте на рабочем диске свой рабочий каталог и назовите его своей фамилией

— Перейдите в свой рабочий каталог

— Создайте текстовый файл a. txt с помощью копирования с консоли в файл.

— Создайте текстовый файл b. txt с помощью перенаправления стандартного вывода.

Вывод на экран

Команда type выводит на экран содержимое текстового файла (например, *.txt или *.bat), например:

type f. txt

Можно также выполнить копирование файла на экран (устройство стандартного вывода, консоль), например

copy f. txt con

Задание

— Выведите на экран файл a. txt командой type

— Выведите на экран файл b. txt командой copy

Команда COPY

Команда copy (англ. copy — «скопируйте, создайте копию») используется, чтобы скопировать один или несколько файлов. Первый параметр команды — исходный файл (источник). Второй параметр — результат копирования (каталог или новый файл). Например, команда copy f1.txt d:t копирует файл f1.txt в каталог d:t.

Для объединения нескольких файлов в один файл между именами файлов ставится знак +. Например команда

copy f1+f2+f3 f4

объединяет файлы f1, f2 и f3 в файл f4

Второй параметр команды может содержать имя файла или путь к файлу.

Примеры:

copy 1.txt 2.txt — копирование файла 1.txt в файл 2.txt в текущем каталоге. Если файл с именем 2.txt уже существует в этом каталоге, то его содержимое заменяется содержимым файла 1.txt. Перед копированием ОС запрашивает согласие пользователя на замену существующего файла.

copy 1.txt d:t2.txt — копирование файла 1.txt в файл 2.txt в каталоге d:t

Звездочка * заменяет любой символ или несколько символов в названии файла. Например, команда copy *.txt d: копирует все файлы с расширением txt в каталог d:.

Задания

— Скопируйте файл a. txt в каталог d:

— Выведите на экран файл d:a. txt

— Скопируйте файл a. txt в d:z. txt

— Выведите на экран файл d:z. txt

— Скопируйте файл b. txt в файл c. txt

— Выведите на экран файл c. txt

— Скопируйте файл a. txt в файл c. txt

— Выведите на экран файл c. txt

— Скопируйте файлы a. txt и b. txt в файл c. txt

— Выведите на экран файл c. txt

— Скопируйте все файлы типа txt в файл d. txt

— Выведите на экран файл d. txt

Работа с архивами

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

Самораспаковывающийся архив SFX (SelF-eXtracting archive) — это исполняемый файл *.exe, содержащий архив и программу распаковки. При запуске такого файла производится распаковка архива без использования дополнительной программы-архиватора.

В лабораторной работе используется программа 7-zip — свободно распространяемый архиватор.

Сайт программы:

https://www.7-zip.org/

Чтобы запускать архиватор из командной строки, необходимо добавить в путь поиска каталог C:Program Files7-Zip

При вызове архиватора ему передают команду — первую букву английского слова, например

add

list

extract

Примеры использования архиватора:

7z a x1 b. txt — упаковка файла b. txt в архив x1.7z

7z l 1.7z — вывод списка файлов из архива 1.7z

7z e 1.7z — извлечение файлов из архива 1.7z

7z e 1.7z — od: — извлечение файлов в каталог d:

7z a — sfx rr *.txt — сжатие всех текстовых файлов в самораспаковывающйся архив rr. exe

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

7z <command> [<switches>…] <archive_name> [<file_names>…]

означает, что пользователь может вводить такие команды:

7z a ghjk

7z l ghjk

7z a ghjk a. txt

7z a — sfx ghjk b.doc b. txt

Задания

— Выясните, в каком каталоге находится архиватор 7-zip

— Выведите на экран путь поиска

— Добавьте путь для поиска архиватора

set path=%path%;C:Program Files7-Zip

— Выведите на экран путь поиска

— Убедитесь, что путь добавлен

— Введите команду 7z и прочитайте справку по использованию архиватора

— Выясните назначение и перевод команд a, e, l

— Упакуйте файл с. txt в архив сс.7z

— Сравните размеры исходного и сжатого файлов

— Создайте текстовый файл tt.docx в редакторе MS Word

— Упакуйте файл tt.docx в архив t1.7z

— Сравните размеры исходного и сжатого файлов

— Упакуйте все файлы с расширением *.txt в архив ttt.7z

— Выведите список файлов из архива ttt.7z

— Распакуйте архив ttt.7z в каталог d:

— Убедитесь, что операция выполнена успешно

— Упакуйте файл tt.doc в саморапаковывающийся архив в каталоге d:

— Сравните размеры исходного и сжатого файлов

— Перейдите в каталог d:

— Запустите созданный архивный файл на выполнение

— Убедитесь, что операция выполнена успешно

Перенаправление ввода-вывода

При выполнении программ в командной строке используется так называемый стандартный ввод-вывод. Это стандартные встроенные функции ОС для ввода текста с клавиатуры и вывода текста на экран. Такие действия выполняются, например, при использовании команд printf и scanf в программе на языке C.

Для перенаправления стандартного ввода-вывода используют следующие символы:

> — записать в файл (вместо вывода на экран);

>> — добавить к файлу (вместо вывода на экран);

< — прочитать из файла (вместо ввода с клавиатуры);

— объединить две команды в конвейер (вместо вывода на экран и ввода с клавиатуры).

Стандартный ввод

Если в параметрах командной строки не указано имя файла, то команда принимает данные с клавиатуры. Например, команда sort сортирует текстовые строки по алфавиту. Команда sort без параметров сортирует текст, вводимый с клавиатуры до нажатия [Ctrl+Z] и [Enter]. Команда sort f. txt сортирует текст из файла f. txt. Команда dir> f. txt отправляет список файлов в файл f. txt вместо вывода на экран. Команда dir>> f. txt дописывает список файлов в конец файла f. txt, если этот файл уже существует.

Конвейер

При организации конвейера стандартный вывод первой команды (вместо вывода на экран) направляется на стандартный ввод второй команды (вместо чтения с клавиатуры). Например, конвейер dir sort создает список файлов, сортирует его и выводит на экран.

Команда more организует постраничный вывод на экран. При организации конвейера в виде tree more, команда more перехватывает вывод на экран результатов работы команды tree и выводит длинный текст по страницам. При работе с командой more для вывода на экран следующей строки нажимают [Enter], для вывода следующей страницы — пробел [Space], для выхода из страничного просмотра — клавишу [Q] (англ. Quit — «выйти»).

Задания

— Вызовите команду dir и запишите результаты в файл d4.txt

— Выведите файл d4.txt на экран

— Вызовите команду ver и добавьте результаты к файлу d4.txt

— Выведите файл d4.txt на экран

— Выведите файловое дерево в постраничном режиме

Пакетные файлы

Пакетный файл — это текстовый файл с расширением *.bat (англ. Batch — «пакет»). В пакетном файле записывают последовательность команд ОС. Имеется также возможность составления несложных программ.

Хотя пакетный файл содержит текст, он является исполняемым файлом. Чтобы запустить пакетный файл из командной строки, нужно ввести его имя и нажать [Enter]. При этом расширение указывать не обязательно.

Для запуска файла или команды в отдельном окне используется команда start, например:

start dir

Задание

— Выведите справку по команде date

— Командой echo создайте пакетный файл da.bat, в котором содержится команда вывода на экран текущей даты

— Запустите файл da.bat на выполнение, указав расширение

— Запустите файл da.bat на выполнение, не указав расширение

— Запустите файл da.bat на выполнение в отдельном окне

— Перейдите в корневой каталог диска D:

— Запустите на исполнение файл da.bat без указания пути

— Ознакомьтесь с сообщением ОС

— Добавьте к пути поиска полный путь к каталогу, где находится файл da.bat

— Убедитесь, что путь поиска изменен

— Запустите на исполнение файл da.bat без указания пути

— Убедитесь, что файл успешно запущен

Работа с файлами и каталогами

Для создания каталогов используется команда mkdir (англ. Make Directory — «Создайте каталог»).

Для удаления каталогов используется команда rmdir (англ. Remove Directory — «Удалите каталог»).

Для удаления фалов используется команда del (англ. Delete — «Удалите»).

Задания

— Вызовите справку по mkdir

— Создайте каталог (в названии используйте номер группы)

— Перейдите в новый каталог

— Создайте каталог (в названии используйте фамилию)

— Перейдите в новый каталог

— Создайте текстовый файл

— Вызовите справку по del

— Удалите текстовый файл

— Поднимитесь на один уровень вверх по файловому дереву

— Вызовите справку по rmdir

— Удалите каталог

— Создайте каталог

— Поднимитесь на один уровень вверх по файловому дереву

— Удалите каталог

Управление процессами

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

Для вывода списка процессов используется команда tasklist (англ. Task List — «Составьте список задач (процессов)»).

Для остановки выполнения процесса используется команда taskkill (англ. Task Kill — «Убейте задачу, остановите выполнение указанного процесса»).

Для остановки процесса требуется указать идентификатор процесса PID (англ. Process Identifier — «Идентификатор процесса»). PID — это «уникальное» целое число, назначенное каждому процессу. У всех процессов эти номера разные.

Задание

— Выведите на экран список процессов

— Определите, какой процесс занимает больше всего памяти

— Определите номер процесса cmd. exe

— Запустите второе командное окно

— Выведите список процессов

— Определите номер второго процесса cmd. exe

— Определите, сколько памяти занимает каждый процесс cmd. exe

Конец ознакомительного фрагмента.

Добавить комментарий