Поиск по этому блогу

воскресенье, 8 мая 2016 г.

Не знать windows shell scripting просто стыдно (7 видео, ссылки и примеры)

Это те самые навыки, освоените которых каждый раз откладываешь на "потом". Вчера задумался о том, как надо бы переписать переменную окружения PATH из консоли (и глобально).
Раскопал подтверждения моим старым "открытиям" для локальных пространтсв имен: просто set - или set PATH=%PATH%;C:\xampp\ph,
потом пошли "открытия:" setx, @echo off, потом начал смотреть видео Setlocal ... потом нашел справочники..., словом, я понял, как низко я пал, когда обнаружил, что можно использовать type... Публикую этот пост вне очереди, чтобы пересматривать видео.

Environment Variables.aspx) ...There are two types of environment variables: user environment variables (set for each user) and system environment variables (set for everyone).
User Environment Variables.aspx)
Adding directory to PATH Environment Variable in Windows set PATH=%PATH%;C:\xampp\php
setx examples.aspx)For examples of how to use this command, see Examples.
Setlocal endlocal Starts localization of environment variables in a batch file. Localization continues until a matching endlocal command is encountered or the end of the batch file is reached.

Как задать или настроить системную переменную PATH?
Справочник CMD (Команда1 & Команда2)||Команда3 - Команда1 и Команда2 группируются, а Команда3 выполняется в случае неудачного выполнения группы команд
echo examples.aspx)
cmd to fileHow can I use a batch file to write to a text file?


Rapid Environment Editor9.0 build 930 (Windows XP, Vista, Windows 7, Windows 8)
Environment Variables editor Microsoft improves Environment Variables editor in latest Windows 10 build

Echo

In [ ]:
C:\Users\alter_000>echo /?
Вывод сообщений и переключение режима отображения команд на экране.

  ECHO [ON | OFF]
  ECHO [сообщение]

Введите ECHO без параметра для определения текущего значения этой команды.

The echo Message command is particularly useful when echo is turned off. To display a message that is several lines long without displaying any commands, you can include several echo Message commands after the echo off command in your batch program.

•When echo is turned off, the command prompt does not appear in the Command Prompt window. To display the command prompt, type echo on.

•If used in a batch file, echo on and echo off do not affect the setting at the command prompt.

•To prevent echoing a particular command in a batch file, insert an at sign (@) in front of the command. To prevent echoing all commands in a batch file, include the echo off command at the beginning of the file.

•To display a pipe (|) or redirection character (< or >) when you are using echo, use a caret (^) immediately before the pipe or redirection character (for example, ^|, ^>, or ^<). To display a caret, type two carets in succession (^^).

You can use echo, and redirect the output to a text file (see notes below):

In [ ]:
rem Saved in D:\Temp\WriteText.bat
@echo off
@echo This is a test> test.txt
@echo 123>> test.txt
@echo 245.67>> test.txt

Output: D:\Temp>WriteText

In [ ]:
D:\Temp>type test.txt
This is a test
123
245.67

D:\Temp>

Notes:

•@echo off turns off printing of each command to the console

•@ at the beginning of the remaining lines stops printing of the echo command itself, but does not suppress echo output. (It allows the rest of the line after @echo to display.

•Unless you give it a specific path name, redirection with > or >> will write to the current directory (the directory the code is being run in).

•The @echo This is a test > test.txt uses one > to overwrite any file that already exists with new content.

•The remaining @echo statements use two >> characters to append to the text file (add to), instead of overwriting it.

•The type test.txt simply types the file output to the command window.

In [ ]:
F:\bat>type setlocal.bat
rem *******Begin Comment**************
  rem This program starts the superapp batch program on the network,
  rem directs the output to a file, and displays the file
  rem in Notepad.
  rem *******End Comment**************
      @echo off
      setlocal
      path=g:\programs\superapp;%path%
      call superapp>c:\superapp.out
      endlocal
      start notepad c:\superapp.out
F:\bat>

To add or modify environment variables, the user selects System from the Control Panel, then selects the Environment tab.
The user can also add or modify environment variables at a command prompt using the set command. Environment variables created with the set command apply only to the command window in which they are set, and to its child processes. For more information, type set /? at a command prompt

C:\Users\alter_000>set /? Вывод, задание и удаление переменных среды cmd.exe.

SET [переменная=[строка]]

переменная Имя переменной среды. строка Строка символов, присваиваемая указанной переменной.

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

Изменение команды SET при включении расширенной обработки команд: Если при вызове указать только имя переменной без знака равенства и значения, команда SET выведет значения всех переменных, имя которых начинается с указанной строки. Например:

SET P

Эта команда выведет значения всех переменных, имена которых начинаются с 'P'.

Если имя переменной не найдено в текущей среде, при возврате команда SET установит значение ошибки ERRORLEVEL 1.

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

In [ ]:
Команда SET поддерживает два дополнительных ключа:

    SET /A выражение
    SET /P variable=[promptString]
    
Ключ /A указывает, что строка справа от знака равенства является числовым 
выражением, значение которого вычисляется.  Обработчик выражений очень
прост и поддерживает следующие операции, перечисленные в порядке убывания
приоритета:

    ()                  - группировка
    ! ~ -               - унарные операторы
    * / %              - арифметические операторы
    + -                 - арифметические операторы
    << >>               - двоичный сдвиг
    &                   - двоичное И
    ^                   - двоичное исключающее ИЛИ
    |                   - двоичное ИЛИ
    = *= /= %= += -=    - присвоение
      &= ^= |= <<= >>=
    ,                   - разделитель операторов

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

Если переменная с указанным именем не определена в системе, 
вместо нее подставляется нулевое значение.  
Это позволяет выполнять арифметические операции со значениями переменных среды,
причем не нужно вводить знаки % для получения значений.  
Если команда SET /A вызывается из командной строки, а не из пакетного файла, она выводит
окончательное значение выражения.  
Слева от любого оператора присваивания должно стоять имя переменной среды.  

Числовые значения рассматриваются как десятичные, если перед ними не стоит 
префикс 0x для шестнадцатеричных чисел,
и 0 для восьмеричных чисел.  

Например, числа 0x12, и 022 обозначают десятичное число 18.  Обратите внимание на запись
восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в
восьмеричной системе исчисления цифры 8 и 9 не используются.
In [ ]:
Ключ /P позволяет установить значение переменной для входной строки, введенной
пользователем.  Показывает указанное приглашение promptString перед чтением
введенной строки.  Приглашение promptString может быть пустым.

Подстановка переменной среды может быть расширена следующим образом:

    %PATH:str1=str2%

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


Можно также использовать строки расширения.

    %PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата.  Если длина не указана, по умолчанию используется оставшееся
значение переменной.  Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.

    %PATH:~-10%

извлечет последние 10 символов переменной PATH.

    %PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.
In [ ]:
Наконец, добавлена поддержка связывания времени выполнения для переменных среды
окружения. 
По умолчанию эта поддержка отключена. Ключ /V командной строки
CMD.EXE позволяет включать и выключать ее. Для вызова справки, наберите CMD /?

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

    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения
    )

Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях IF
подставляется в момент первого использования в первом IF, в том числе и в тело
первого ветвления IF, которое является составным выражением. В IF внутри
составного выражения в действительности сравниваются значения "before" и
"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:

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

в данном случае список файлов текущей папки никогда не будет построен. Вместо
этого, значением переменной LIST будет имя последнего найденного файла.
In [ ]:
И вновь, это случилось потому, что %LIST% подставляется всего один раз -
в момент обработки выражения FOR, когда список еще пуст.
Фактически, приведенный фрагмент эквивалентен следующему примеру:

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

в котором имя последнего найденного файла сохраняется в переменной LIST.

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

    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "!VAR!" == "after" @echo Тело внутреннего оператора сравнения
    )

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

При включенной расширенной обработке команд доступны несколько переменных
среды, которые расширяются, но не отображаются в списке при вызове команды SET.
Значения этих переменных вычисляются динамически каждый раз при их извлечении.
Если пользователь явно задает переменные с одним из этих имен,
то это определение переопределяет соответствующее динамическое определение,
описанное ниже:
In [ ]:
%CD% - заменяется строкой текущего каталога.

%DATE% - заменяется текущей датой с форматом команды DATE.

%TIME% - заменяется текущей датой с форматом команды TIME.

%RANDOM% - заменяется случайным десятичным числом в диапазоне от 0 до 32767.

%ERRORLEVEL% - заменяется текущим значением ERRORLEVEL

%CMDEXTVERSION% - заменяется текущим значением версии
                    расширенной обработки команд.

%CMDCMDLINE% - заменяется исходной командной строкой, которая вызвала
командный процессор.

%HIGHESTNUMANODENUMBER% - заменяется максимальным номером узла NUMA
    на этом компьютере.
In [ ]:
####
In [ ]:
C:\Users\alter_000>setx /?

Три способа выполнения SetX:

Синтаксис 1:
    SETX [/S <система> [/U [<домен>\]<пользователь> [/P [<пароль>]]]] var
         <значение> [/M]

Синтаксис 2:
    SETX [/S <система> [/U [<домен\>]<пользователь> [/P [<пароль>]]]] var /K
         <путь> [/M]

Синтаксис 3:
    SETX [/S <система> [/U [<домен\>]<пользователь> [/P [<пароль>]]]]
         /F <файл> {var {/A x,y | /R x,y строка}[/M] | /X} [/D <разделители>]

Описание.
    Создание или изменение переменных среды в пользовательской
    или системной среде. Переменные можно задавать с помощью
    аргументов, параметров реестра или ввода из файла.

Параметры:
    /S     <система>                Подключаемый удаленный компьютер.

    /U     [<домен>\]<пользователь> Пользовательский контекст, в котором
                                    должна выполняться эта команда.

    /P     [<пароль>]               Пароль для этого пользовательского
                                    контекста.

    var                             Задаваемая переменная среды.

    значение                        Значение, назначаемое переменной
                                    среды.

    /K     <путь>                   Задание переменной по информации,
                                    содержащейся в параметре реестра.
                                    Путь должен задаваться в формате
                                    куст\раздел\...\параметр. Например,
                                    HKEY_LOCAL_MACHINE\System\
                                    CurrentControlSet\
                                    Control\timeZoneInformation\StandardName.

    /F     <файл>                   Имя текстового файла, который следует
                                    использовать.

    /A     x,y                      Задание абсолютных координат файла
                                    (строка X, элемент Y) как параметров
                                    поиска в файле.

    /R     x,y <строка>             Задание координат относительно значения
                                    "строка" как параметров поиска.

    /M                              Указание создания переменной среды
                                    на системном уровне (HKEY_LOCAL_MACHINE).
                                    По умолчанию переменная среды
                                    создается в разделе HKEY_CURRENT_USER
                                    на уровне пользователя.

    /X                              Отображение содержимого файла с
                                    координатами x,y.

    /D     <разделители>            Указание дополнительных разделителей,
                                    таких как "," или "\".
                                    Встроенные разделители: символы пробела,
                                    табуляции, возврата каретки и перевода
                                    строки. Дополнительным разделителем может
                                    быть любой знак ASCII.
                                    Максимальное число разделителей,
                                    включая встроенные, равняется 15.

    /?                              Вывод справки по использованию.

Примечания.
      1) SETX записывает переменные в главную среду в реестре.

      2) На локальном компьютере переменные, созданные или измененные данным
         средством, будут доступны в будущем окне командной строки,
         но не в текущем окне CMD.exe.

      3) На удаленном компьютере переменные, созданные или измененные данным
         средством, будут доступны со следующего сеанса входа.

      4) Допустимые типы параметров реестра: REG_DWORD, REG_EXPAND_SZ,
         REG_SZ, REG_MULTI_SZ.

      5) Поддерживаемые кусты:  HKEY_LOCAL_MACHINE (HKLM),
         HKEY_CURRENT_USER (HKCU).

      6) Разделители определяются с учетом регистра.

      7) Значения типа REG_DWORD извлекаются из реестра в десятичном
         формате.

Примеры:
    SETX MACHINE COMPAQ
    SETX MACHINE "COMPAQ COMPUTER" /M
    SETX MYPATH "%PATH%"
    SETX MYPATH ~PATH~
    SETX /S система /U пользователь /P пароль  MACHINE COMPAQ
    SETX /S система /U пользователь /P пароль MYPATH ^%PATH^%
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\timeZoneInformation\StandardName
    SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber" /M
    SETX /S система /U пользователь /P пароль TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\timeZoneInformation\
         StandardName
    SETX /S система /U пользователь /P пароль  BUILD /K
         "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber" /M
    SETX /F ipconfig.out /X
    SETX IPADDR /F ipconfig.out /A 5,11
    SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S система /U пользователь /P пароль  /F c:\ipconfig.out /X

C:\Users\alter_000>

Windows 10 и Windows 8 (from java help)

In [ ]:
1.В строке "Поиск" выполните поиск: Система (Панель управления)
2.Нажмите на ссылку Дополнительные параметры системы.
3.Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH. Нажмите Изменить. Если переменной PATH не существует, нажмите Создать.
4.В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH. Нажмите ОК. Закройте остальные открытые окна, нажимая ОК.
5.Откройте заново окно командной строки и выполните код java.

Solaris и Linux (from java help)

In [ ]:
1. Чтобы узнать, правильно ли настроен путь:
 В окнах терминала введите:
% java -version
 Будет выведена версия средства java, если не удается ее найти. Если версия устарела или появляется ошибка java: команда не найдена, то путь задан неправильно. 
2.Определите, какая исполняемая версия java является первой найденной в переменной PATH
 В окне терминала введите:
% which java
 
Окончательная настройка пути

Чтобы задать путь окончательно, настройте его в файле автозагрузки.
Примечание. Приведены инструкции для двух самых популярных оболочек на Linux и Solaris. Если вы используете другие оболочки, см. Учебное пособие по установке переменной PATH. 
 
Оболочка Bash

Отредактируйте файл автозагрузки (~/.bashrc)
1.Измените переменную PATH variable
PATH=/usr/local/jdk1.8.0/bin:$PATH 
export PATH
2.Сохранить изменения и закрыть окно
3.Загрузите файл автозагрузки 
% . /.profile 
4.Убедитесь, что путь задан, повторив команду java
% java -version


Посты чуть ниже также могут вас заинтересовать

Комментариев нет: