В Windows Explorer почему мы можем создать папку или файл с символом процента (%), если символ процента используется для существующих переменных?

  1. Перейдите в Проводник Windows и создайте папку / каталог с именем %systemdrive% , %windir% или любой другой существующей переменной.
  2. Откройте командную строку и перейдите в только что созданную папку.

Вы не можете, потому что в имени папки есть процентные ( % ) символы, путающие командную строку, потому что символ процента используется для существующих переменных.

Выход из символа процента ( % ) с символами в два процента ( %% ) не работает, поэтому ответ ДэвидПостилл неверен:

Окно командной строки с небольшим количеством рабочего стола Explorer Итак, в Windows Explorer почему мы можем создать папку или файл с символом процента ( % ), если для существующих переменных используется символ процента?

2 Solutions collect form web for “В Windows Explorer почему мы можем создать папку или файл с символом процента (%), если символ процента используется для существующих переменных?”

Почему мы можем создать папку / файл с символом процента?

Символ % не является зарезервированным символом в имени файла.

Зарезервированными символами для именования файлов, путей и пространств имен являются:

 < (less than) > (greater than) : (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark) * (asterisk) 

Исходные имена файлов, путей и пространств имен


Символ процента зарезервирован для переменных

Теперь откройте командную строку и попробуйте перейти в созданную вами папку.

Вы не можете, потому что в имени папки есть процентные символы, указывающие, что это переменная.

Вышеизложенное неверно. Все работает так, как вы ожидали.

Пример использования %test% :

 F:\test>echo %test% %test% F:\test>md %test% F:\test>cd %test% F:\test\%test%> 

Пример использования %systemdrive% :

 F:\test>echo %systemdrive% C: F:\test>md %systemdrive% A subdirectory or file C: already exists. F:\test>cd %systemdrive% C:\Users\DavidPostill F:\test>c: C:\Users\DavidPostill>f: F:\test> F:\test>dir %systemdrive% Volume in drive C has no label. Volume Serial Number is C8D0-DF1E Directory of C:\Users\DavidPostill 03/06/2016 16:16 <DIR> . 03/06/2016 16:16 <DIR> .. 18/07/2015 19:25 <DIR> .atom 03/06/2016 16:16 <DIR> .oracle_jre_usage 08/05/2015 20:29 <DIR> Contacts 03/06/2016 16:14 <DIR> Desktop 01/06/2016 09:04 <DIR> Documents 02/05/2016 12:55 <DIR> Downloads 09/01/2015 11:51 <DIR> dwhelper 08/05/2015 20:29 <DIR> Favorites 20/02/2016 22:00 <DIR> Jaikoz 08/05/2015 20:29 <DIR> Links 17/03/2015 06:19 <DIR> Music 29/03/2016 19:01 <DIR> Pictures 08/05/2015 20:29 <DIR> Saved Games 23/06/2016 10:55 <DIR> Searches 02/05/2016 12:36 <DIR> SecurityScans 11/04/2016 12:14 994 Start Menu - Shortcut.lnk 31/05/2016 00:52 <DIR> temp 17/03/2015 06:19 <DIR> Videos 1 File(s) 994 bytes 19 Dir(s) 69,716,357,120 bytes free 

Пропадание в процентах

Символ % имеет особое значение для параметров командной строки и параметров FOR .

Чтобы обрабатывать процент как обычный символ, удвойте его:

 %% 

Синтаксис источника


Дальнейшее чтение

  • Индекс AZ для командной строки Windows CMD – отличная ссылка для всех связанных строк Windows.
  • Синтаксис – символы побега, разделители и цитаты.

Ответ Дэвида Постилла велик, но может немного запутать новичков. Я постараюсь перефразировать.

% Не является зарезервированным символом.

Это символ со специальным значением командной оболочки (aka cmd.exe и command.com )

Разница заключается в следующем:

  • Вы не можете использовать зарезервированные символы вообще (но см. Ниже)
  • Вы можете использовать специальные и escape-символы – просто не набрав их как-есть

Другими словами, вы можете создать файл или папку, содержащую % в их имени. Вы можете сделать это напрямую, используя Windows Explorer, потому что у % нет особого значения. Не было никакого намерения помешать вам создавать такие файлы в командной строке, но поскольку у % есть особое значение, вам нужно использовать синтаксис, описанный ниже, для создания таких файлов.

BAT-файлы

Если вы пишете командный файл (* .bat, * .cmd), который запускается командой командной оболочки (например, приложение командной строки), чтобы использовать % буквально (например, чтобы создать файл с % в имени, а не Для замены переменной или параметра) вам нужно вместо этого набрать %% .

Например,

  • Команда echo %windir% производит вывод: c:\windows
  • Однако команда echo %%windir%% производит выход: %windir%
  • И т. echo %%%%windir%%%% : команда echo %%%%windir%%%% производит выход: %%windir%%

Поэтому, если вы сохраните следующую строку в качестве test.bat и запустите ее, она создаст каталог с именем %test% полным процентных знаков:

 md %%test%% 

Если нет переменной с именем test , эта следующая команда эквивалентна последней – она ​​также создает каталог %test% :

 md %test% 

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

Если вы намерены использовать команду for BAT-файла, вам также нужно удвоить % , чтобы for команды было специальное значение, а не для самой командной оболочки:

 for %%i in (*.*) do echo %%i 

Это приведет к созданию списка файлов в текущем каталоге (то есть, %%i имеет особое значение), и я не уверен, как заставить его создавать литерал %%i не прибегая к обходному пути %p% описанному в следующем разделе ( %%%%i здесь не работает).

% Не является единственным символом со специальным значением в командной строке. Другие включают ^ , < , > , | , ( , ) , & ! , " Большинство из них (исключая " ) могут быть экранированы, то есть с префиксом escape-символа ^ чтобы вставить буквенный символ, подавляя его особый смысл. Они также теряют свою специальную функцию внутри строки с двойной кавычкой и " сбегают с обратной косой чертой: \" . Некоторые кавычки ( ^ ), возможно, необходимо удвоить внутри строки с двойным номером и где замедленная замена переменных имеет место ( ! Особый смысл).

Командная строка

К сожалению, при непосредственном вводе команд в окно командной строки, удвоение % символа просто приводит к %% т. %% Вышеприведенный подход не работает в этом случае.

Кажется, что это обходной путь, использующий причуду в обработке команд – вы можете получить литерал % , набрав ^ после % . Этот подход не является надежным, хотя: если ваше имя файла заключено в двойные кавычки, ^ интерпретируется буквально (и не удаляется, как без кавычек)

  • Команда echo %windir% производит вывод: c:\windows
  • Команда echo %^windir% производит выход: %windir%
  • Команда echo "%^windir%" производит выход: "%^windir%" (с дополнительным ^ – не то, что мы хотели)

Вместо этого я рекомендую другое обходное решение:

  • Создайте такую ​​переменную: set "p=%"
  • Используйте %p% вам понадобится буквальный знак процента: echo "%p%windir%p%" теперь будет выводить результат: "%windir%"

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

Зарезервированные файловые системы

Обычно вы не можете создать файл или каталог, содержащий следующие зарезервированные символы в его имени: / ? < > \ : * | " , NULL-символ и символы с кодами от 1 до 31, а также пробелы не могут быть последними символами, а следующие имена являются незаконными: com1 com2 com3 com4 com5 com6 com7 com8 com9 lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9 con nul prn .

Однако некоторые из этих ограничений можно обойти префиксный путь к файлу с \\?\ Следующим образом: \\?\c:\test...\nul . По крайней мере, файлы с зарезервированными именами и те, которые заканчиваются пробелом и точкой, можно манипулировать таким образом.

Более того, файловая система NTFS поддерживает несколько подсистем имен: DOS, Windows и POSIX. Подсистема Windows имеет все ограничения выше, в то время как POSIX запрещает / и NULL-символ.

Таким образом, GNU / Linux OS (надмножество POSIX) может создавать (и удалять) имена файлов / каталогов, с которыми большинство нормальных функций Windows API (и, следовательно, программ Windows) работать не могут. В Windows XP работа с ними была возможна путем установки бесплатной подсистемы «Services for Unix» (SFU); Для Vista и выше для этого требуются сторонние инструменты. Я не уверен, что новая подсистема ubuntu-on-windows10 может это сделать.

  • Как я могу получить Windows XP Explorer в Windows 7?
  • Как * диагностировать * Windows Explorer часто замерзает
  • Как настроить боковую панель Windows Explorer?
  • Где хранятся настройки быстрого доступа Win 10?
  • Проводник Очень медленный и нереактивный
  • Строка проводника Windows над командной строкой
  • Почему так медленно используется URL-адрес в качестве имени файла в проводнике Windows?
  • Создать «файл: //» URI в проводнике Windows
  • FTP из проводника Windows в активном режиме?
  • Автоматически создавать эскизы для всех подпапок каталога в Windows 7?
  • Почему копирование файлов в проводнике Windows намного медленнее командной строки
  • Windows 7 Блокировка исполняемых файлов
  • Interesting Posts

    Как я могу использовать Kik на ПК Win7Pro без телефона или учетной записи Google, например, возможно, с эмулятором Windows Phone?

    Программа Windows для удаления заголовка, рамки и т. Д. Из окна?

    Как диагностировать замораживание при запуске в Windows XP?

    Открыть Sublime Text 2 с новой вкладкой вместо нового окна

    Найти устройство в Windows на основе идентификаторов объектов физического устройства (PDO)

    Chrome не работает с подключением к удаленному рабочему столу

    Случайный режим отключения, который игнорирует ввод клавиатуры, кроме действий переключения, окна

    Сравнение дистрибутивов Linux

    Лучший srvany.exe для Windows XP и Windows 7?

    Отсутствует разрешение Windows 7

    Включить TLS 1.1 и 1.2 для клиентов на Java 7

    Как я могу обойти Windows File Protection, чтобы переименовать системный файл?

    Как узнать, работает ли turbo boost на процессоре I7 860?

    Flash-файлы (.swf) запрашивают загрузку вместо открытия

    Лучший способ передачи файлов через локальную сеть между двумя компьютерами Linux

    Давайте будем гением компьютера.