Windows пробел в пути

В средах командной строки, таких как командная строка Windows и PowerShell, пробелы используются для разделения команд и аргументов, но имена файлов и папок также могут содержать пробелы. Чтобы указать путь к файлу имеющего символ пробела в названии или пути к файлу, вам нужно «экранировать» его.

Почему нужно избегать символ пробела?

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

Например, предположим, что у вас есть текстовый файл, содержимое которого вы хотите просмотреть. Вы можете сделать это с помощью команды type. Предполагая, что текстовый файл находится по адресу C:\Папка\File.txt, следующая команда в командной строке покажет содержимое файла:

Отлично! А что, если у вас есть такой же файл по адресу C:\Новая папка\File.txt? Если вы попробуете выполнить приведенную ниже команду, это не сработает — пробелы в пути к файлу мешают правильно обработать команду.

type C:\Новая папка\File.txt

Командная строка считает, что вы пытаетесь найти файл с именем Новая, в результате вы получаете: «Ошибка во время обработки: C:\Новая.
Системе не удается найти указанный путь.».
Тоже самое будет? если пробел есть в имени файла New File.txt

Ошибка командной строки при отсутствии экранирования пробелов

Три способа избежать ошибок из-за символа пробел в Windows 10

Есть три разных способа избежать проблем используя пробел в пути к файлу Windows:

  1. Заключив путь (или его части) в двойные кавычки ().
  2. Добавляя символ вставки (^) перед каждым пробелом. (Это работает только в командной строке / CMD.)
  3. Добавляя знак ударения (`) перед каждым пробелом. (Это работает только в PowerShell.)

Мы покажем вам, как использовать каждый из перечисленных способов.

Заключите путь к файлу в кавычки («)

Стандартный способ убедиться, что Windows правильно обрабатывает путь к файлу, — заключить его в двойные кавычки ". Например, в нашем примере команды выше мы просто выполняем следующее:

type "C:\Новая папка\Test File.txt"

Вы можете заключить части пути в кавычки, если хотите. Например, предположим, что у вас есть файл с именем File.txt в этой папке. Вы можете запустить следующее:

type C:\"Новая папка"\File.txt

Однако в этом нет необходимости — в большинстве случаев вы можете просто заключить весь путь в кавычки.

Это решение работает как в традиционной среде командной строки (CMD), так и в Windows PowerShell.

Заключение пробелов в двойные кавычки в командной строке

Иногда: используйте символ каретки для правильной обработки пробелов (^)

В командной строке символ каретки ^ теоретически позволяет избежать пробелов. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ в числовом ряду на клавиатуре. Чтобы ввести символ каретки, нажмите Shift + 6.)

Вот проблема: хотя это должно работать, а иногда и работает, это работает не всегда. Командная строка обрабатывает этот символ странно.

Например, запустите следующую команду, но она не сработает:

type C:\Новая^ папка\Test^ File.txt

Ошибка экранирования пробела в командной строке

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

C:\Новая^ папка\Test^ File.txt

Экранирование пробела каретки работает в командной строке

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

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

PowerShell: используйте символ ударения (`)

PowerShell использует знак ударения ` в качестве символа-пробела. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ над клавишей Tab и под клавишей Esc на клавиатуре.)

type C:\Новая` папка\Test` File.txt

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

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

Обратите внимание, что это работает только в среде PowerShell. В командной строке вам нужно будет использовать символ каретки.

Если вы знакомы с UNIX-подобными операционными системами, такими как Linux и macOS, вы, возможно, привыкли использовать символ обратной косой черты (\) перед пробелом, чтобы правильно обработать команду. Windows использует его для пути к файлам, поэтому он не работает — символы каретки (^) и ударения (`) это своего рода обратная косая черта Windows в зависимости от того, какую оболочку вы используете.

Command-line environments like the Windows Command Prompt and PowerShell use spaces to separate commands and arguments—but file and folder names can also contain spaces. To specify a file path with a space inside it, you’ll need to “escape” it.

Command Line 101: Why You Have to Escape Spaces

“Escaping” a character changes its meaning. For example, escaping a space will cause the shell to treat it like a standard space character rather than a special character that separates command-line arguments.

For example, let’s say you have a text file that you want to see the contents of. You can do that with the type command. Assuming the text file is at C:\Test\File.txt, the following command in Command Prompt will show its contents:

Great. Now, what if you have the same file at C:\Test Folder\Test File.txt? If you try running the below command, it won’t work—those spaces in the file path are getting in the way.

type C:\Test Folder\Test File.txt

The command line thinks you’re trying to look for a file called C:\Test and says it “cannot find the path specified.”

Three Ways to Escape Spaces on Windows

There are three different ways you can escape file paths on Windows:

  • By enclosing the path (or parts of it) in double quotation marks ( ” ).

  • By adding a caret character ( ^ ) before each space. (This only works in Command Prompt/CMD, and it doesn’t seem to work with every command.)

  • By adding a grave accent character ( ` ) before each space. (This only works in PowerShell, but it always works.)

We’ll show you how to use each method.

Enclose the Path in Quotation Marks ( ” )

The standard way to ensure Windows treats a file path properly is to enclose it in double quotation mark ( ” ) characters. For example, with our sample command above, we’d just run the following instead:

type "C:\Test Folder\Test File.txt"

You can actually enclose parts of the path in quotation marks if you prefer. For example, let’s say you had a file named File.txt in that folder. You could run the following:

type C:\"Test Folder"\File.txt

However, that isn’t necessary—in most cases, you can just use quotation marks around the whole path.

This solution works both in the traditional Command Prompt (CMD) environment and in Windows PowerShell.

Sometimes: Use the Caret Character to Escape Spaces ( ^ )

In the Command Prompt, the caret character ( ^ ) will let you escape spaces—in theory. Just add it before each space in the file name. (You’ll find this character in the number row on your keyboard. To type the caret character, press Shift+6.)

Here’s the problem: While this should work, and it does sometimes, it doesn’t work all the time. The Command Prompt’s handling of this character is strange.

For example, with our sample command, you’d run the following, and it wouldn’t work:

type C:\Test^ Folder\Test^ File.txt

On the other hand, if we try opening our file directly by typing its path into the Command Prompt, we can see that the caret character escapes the spaces properly:

C:\Test^ Folder\Test^ File.txt

So when does it work? Well, based on our research, it seems to work with some applications and not others. Your mileage may vary depending on the command you’re using. The Command Prompt’s handling of this character is strange. Give it a try with whatever command you’re using, if you’re interested—it may or may not work.

For consistency, we recommend you stick with double quotes in the Command Prompt—or switch to PowerShell and use the grave accent method below.

PowerShell: Use the Grave Accent Character ( ` )

PowerShell uses the grave accent ( ` ) character as its escape character. Just add it before each space in the file name. (You’ll find this character above the Tab key and below the Esc key on your keyboard.)

type C:\Test` Folder\Test` File.txt

Each grave accent character tells PowerShell to escape the following character.

Note that this only works in the PowerShell environment. You’ll have to use the caret character in Command Prompt.

If you’re familiar with UNIX-like operating systems like Linux and macOS, you might be used to using the backslash ( \ ) character before a space to escape it. Windows uses this for normal file paths, so it doesn’t work—-the caret ( ^ ) and grave accent ( ` ) characters are the Windows version of backslash, depending on which command-line shell you’re using.

Source: how to geek

Пути файловых систем в Windows страннее, чем можно подумать. В любой производной от Unix системе пути на удивление просты: если нечто начинается с /, то это путь. Но всё совершенно иначе в Windows, которая имеет озадачивающее разнообразие схем составления пути.

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

Стоит заметить, что статья ограничивается только тем типом путей, который видит пользователь приложений Windows (обусловленный Win32 API). Под этим слоем есть ещё больше любопытного, в основном касающегося тех, кто пишет драйверы оборудования и тому подобное.

Вкратце

Форматы абсолютных путей

Форматы относительных путей

Запрещённые символы

Ограничения длины

Схемы путей Windows

В Windows существует три разных вида абсолютного пути и три разных типа относительного пути.

Абсолютные пути

Абсолютные, или полные пути — это завершённые пути, сами по себе уникальным образом идентифицирующие местоположение в файловой системе.

Пути к диску

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

D:\Doughnut preferences\With jam in

UNC-пути

UNC расшифровывается как Universal Naming Convention, это описание файлов, начинающееся с \\, часто используемое для ссылок на сетевые накопители. Первый сегмент после \\ — это хост, который может быть или сервером с именем, или IP-адресом:

\\Work\Hard
\\192.168.1.15\Hard

UNC-пути также можно использовать для доступа к локальным дискам:

\\localhost\C$\Users\Andrew Fletcher
\\127.0.0.1\C$\Users\Alan Wilder

Или с использованием имени компьютера:

\\Pipeline\C$\Users\Martin Gore

Символ $ в C$ обозначает скрытую административную общую папку; он не заменяет двоеточие рядом с именем диска :. Общие диски в стиле C$ — это просто удобные ярлыки, автоматически создаваемые Windows. Доступ к дискам через них возможен, только если вы вошли как администратор.

Стоит также заметить, что \\Pipeline сам по себе не валидный путь к папке, он идентифицирует только сервер. Чтобы попасть в папку, нужно добавить имя общей папки.

Пути к устройству

Путь к устройству начинается с одного из следующих фрагментов:

  • \\?\
  • \\.\

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

Синтаксис доступа к локальной папке выглядит как один из этих вариантов:

\\?\Z:\Animals\Cute
\\.\Z:\Animals\Cunning

Если вам нужно ещё больше загадочности, то можно также подставить эквивалентный Z: идентификатор устройства:

\\?\Volume{59e01a55-88c5-411f-bf0b-92820bdb2548}\Animals\Cryptic

Здесь Volume{59e01a55-88c5-411e-bf0a-92820bdb2549} — это идентификатор дискового тома, на котором находится Z: в компьютере.

Также существует специальный синтаксис для описания UNC-путей как путей к устройству:

\\?\UNC\localhost\Z$\Animals\Curious

В путях к устройству часть, идущая после \\?\ или \\.\ — это имя, определённое во внутреннем пространстве имён Object Manager Windows. Те, кому любопытно исследовать это пространство имён, могут скачать инструмент WinObj и посмотреть.

Нормализованные и литеральные пути к устройству

Так в чём же разница между \\?\ и \\.\?

В обычном случае, когда вы передаёте путь операционной системе Windows, она очищает его, прежде чем использовать. Этот процесс называется нормализацией, подробнее о нём мы поговорим ниже.

Путь \\?\ пропускает этот этап очистки, а \\.\ не пропускает. Поэтому можно назвать пути \\?\ литеральными путями к устройству, а \\.\нормализованными путями к устройству.

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

Относительные пути

Относительные пути — это неполные пути, которые для уникальной идентификации местоположения необходимо скомбинировать с другим путём.

Пути, относительные к текущей папке

Эти пути используют в качестве начальной точки текущую папку, например, .\Torquay относится к подпапке текущей папки, а ..\Wales относится к подпапке родителя текущей папки.

Папки, относительные к корню текущего диска

Если начать путь с одной \, то путь интерпретируется как относительный к корню текущего диска. Поэтому если вы находитесь в любом месте диска E: и введёте \Africa, то окажетесь в E:\Africa.

Когда доступ к текущей папке выполняется через UNC-путь, то путь, относительный к текущему диску, интерпретируется относительно к общей корневой папке, допустим \\Earth\Asia.

Пути, относительные к текущей папке диска

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

Это единственный тип путей, не поддерживаемый Fileside, потому что в нём нет понятия текущей папки каждого диска. Текущую папку имеют только панели.

Нормализация

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

  • Замена косых черт (/) на обратные косые черты (\)
  • Сворачивание повторяющихся разделителей в виде обратных косых черт в один
  • Резолвинг относительных путей заменой всех . или ..
  • Отсечение завершающих пробелов и точек

Таким образом, в общем случае можно указывать пути Windows при помощи косых черт.

Правила именования в Windows

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

Запрещённые символы

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

< > " / \ | ? *

Также исключаются любые непечатаемые символы со значением ASCII меньше 32.

Хитрое двоеточие

В большинстве случаев : также запрещено.

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

Опасная точка

Символ . допустим внутри или в начале имени, но запрещён в конце.

Начинающие и завершающие пробелы

Любопытно, что Windows допускает пробелы в начале, но не в конце имён. Так как имя с пробелами в начале и конце часто выглядит похожим на имя без пробелов, обычно это ужасная идея, и при переименовании или создании файлов Fileside автоматически удаляет их.

Запрещённые имена

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

CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9.

Это включает и имена с расширениями. Например, если вы назовёте файл COM1.txt, то внутри он преобразуется в \\.\COM1\ и интерпретируется самой Windows как устройство. А это не то, что нам нужно.

Чувствительность к регистру

В большинстве случаев Windows не делает различий между символами в верхнем и нижнем регистре в путях.

C:\Polish hamlet, c:\polish Hamlet, C:\Polish Hamlet и C:\POliSh hAMlET считаются абсолютно одинаковыми.

Однако с обновления Windows 10 за апрель 2018 года файловые системы NTFS имеют опцию включения чувствительности к регистру на уровне папок.

Ограничения длины

Мы ещё не закончили: ограничения есть и на длину.

Пути

Традиционно длина пути в Windows не могла превышать 260 символов. Даже сегодня это справедливо для некоторых приложений, если только их разработчики не предприняли мер для обхода этого ограничения.

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

Имена

Имена файлов и папок не могут быть длиннее 255 символов.

Так много способов сказать одно и то же

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

  • C:\CHAMELEON
  • c:\chameleon
  • C:\/\\//\\\///Chameleon
  • C:\Windows\..\Users\..\Chameleon
  • \\localhost\C$\Chameleon
  • \\127.0.0.1\C$\Chameleon
  • \\?\C:\Chameleon
  • \\.\C:\Chameleon
  • \\.\UNC\localhost\C$\Chameleon
  • \\?\Volume{59e01a55-88c5-411e-bf0a-92820bdb2549}\Chameleon
  • \\.\GLOBALROOT\Device\HarddiskVolume4\Chameleon
  • и так далее

Вот что получаешь, когда приходится обеспечивать полную обратную совместимость в течение нескольких десятилетий!

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

Неочевидное поведение команд в командной строке.

Создав супер быстрый алгоритм BAT CMD, сумевший ушатать интерпретатор командной строки Windows — я столкнулся с неожиданно неочевидным поведением команд, о котором если и догадывался ранее, то — весьма туманно и неопределённо … Даже, не знаю — с чего начать ))) …

Установщик SET.

Давайте начнём с команды установщика SET … Почему — установщик ? …

Помогая выполнять арифметические операции SET /A B=2+5 эта команда принимает + как руководство к действию, сумматор, и вычисляя 2+5 — устанавливает переменной %B% значение =7 … Можно сказать, и — присваивает … Но …

присвоить — assign, appropriate … значить — пометить, заимствовать себе … в то время, как …

установить — install, place, mount, fix, specify, adjust, fit … что в переводе с английского — объединяет все действия к общей идее — установить нечто — на своё место ; приспособить — таким образом, чтобы со всех сторон, это выглядело — правильно … Поэтому, установщик — наиболее подходящее слово … Тем более, в других языках, оператор присваивания, это знак = равно …

Тем, более — SET — не только вычисляет … А, вот и — подходящий пример …

Установите переменной а значение & …

SET a=& … не работает … ECHO %a% = %a% …

Наверно, надо экранировать символ … Среди специальных символов, используемых в командной строке, можно выделить следующие : & | > < / ? * % , которые используются для соединения команд, перенаправления ввода / вывода, поиска файлов по маске и т.д. … Амперсанд — входит в их число, и подлежит экранированию …

Что, чем и как экранировать ? … символ ^ экранирует практически всё, включая самого себя … Подробнее про экранирование спец символов, можно будет прочитать — ниже …

Значит нужно экранировать — так : ^& … Пробуем …

SET a=^& … не работает … ECHO %a% = Режим вывода команд на экран (ECHO) включен …

Ого, крепкий орешек ))) …

Начинаем искать специальные знания и натыкаемся на совет — использовать кавычки … Обычно, кавычки применяются, когда нужно игнорировать пробел в значении переменной, обычно воспринимаемый, как — делитель параметров … Также, кавычки — являются своеобразным экраном текстовых символов и строк … Что же — пробуем …

SET «a=&» … не работает … ECHO %a% = Режим вывода команд на экран (ECHO) включен … Тот же вид, только сбоку ))) … Ну, что же, поскольку мыслей больше нет — объединяем все известные способы — в одно целое …

SET «a=^&» … ура … заработало … ECHO %a% = & …

Посмотрите, вам не кажется эта запись кавычек — совершенно неочевидной … Наверное правильнее, было бы записать это выражение — так …

SET a=»^&» … Оказывается — нет … Эта запись — неправильная … Оказывается ещё и то, что команда SET — уже имеет неявные кавычки, которые гласят : всё, что находится внутри кавычек — принадлежит переменной a …

SET a=»^&» … ECHO %a% = «^&» … Явные кавычки и то, что экранировано внутри них — стало принадлежать неявным кавычкам и, соответственно — оператору / переменной а … Вот это наиболее яркий пример совершенно неочевидного поведения интерпретатора командной строки …

В случае математики, этот пример — не показывает такой нужной наглядности …

SET /A «a=2+5″ или SET /A a=»2+5» всё равно дают a = 7…

Теперь, посмотрим кавычки с пробелом в пути …

SET a=c:\my folder … ECHO %a% = c:\my folder … Пока вы оперируете переменной внутри интерпретатора командной строки — кавычки не имеют большого значения (до сложных случаев экранирования спецсимволов) … В 99% стандартных операций с текстом и числами, кавычки — не потребуются …

Создадим папку c:\my folder и внутри my folder.txt и выполнить команду …

DIR %a% … Содержимое папки c:\ — файл не найден … Содержимое папки c:\users\user — файл не найден …

DIR «c:\my folder» … Явным прямым указанием проверяем, есть ли такой каталог на диске, а в кавычках — потому-что есть пробелы в пути … Содержимое папки c:\my folder … файл my folder.txt … Всё прекрасно видится и читается … Изменяем команду установщика пути …

SET «a=c:\my folder» … ECHO %a% = c:\my folder … Эта команда — снова не подойдёт, так как не содержит кавычек, экранирующих пробелы в пути …

SET a=»c:\my folder» … Именно в этом случае, нужен — неправильный вариант команды, который фактически выглядит, как SET «a=»c:\my folder»» — внутри неявных кавычек SET …

ECHO %a% = «c:\my folder» … Проверяем значение переменной … Другое дело ))) …

DIR %a% … Проверяем DIR … Содержимое папки c:\my folder … файл my folder.txt … Всё работает … Когда вы используете пробелы или спец символы — в виде текста команды, в интерфейсе командной строки Windows — они подлежат экранировке, чтобы не быть интерпретированными — как управляющий операторы или конструкции синтаксиса …

Командная строка. Интерпретатор CMD. Интерфейс Windows.

Многие, наблюдая черный экран DOS в среде Windows — воспринимают его, как обычную программу CMD.EXE, считая этот способ взаимодействия с компьютером и ОС — страшным, сложным, непрактичным и устаревшим ))) … После много красочной Windows — очень некомфортно оказаться в среде, без графического интерфейса и визуальной обратной связи … На самом деле, это — одно из жесточайших и неочевидных заблуждений … Нужно явно понимать, что эти разные концепции командной строки, интерпретатор CMD и интерфейс Windows — тесно интегрированы одно в другое … Отсюда и проистекает понимание, того — как воспринимать спец символы — в зависимости от среды обработки …

Интерпретатор CMD командной строки … Если специальные символы или управляющие операторы используются для вычислений параметров и результатов команды — внутри самой себя — спецсимволы должны экранироваться, чтобы отменить их специальное действие и представить их в виде обычных тексто / графических символов …

Напечатать строку a > b … Это — не выражение, и не переменные — обычный текст …

ECHO a > b … не даст ничего — бред, с точки зрения интерпретатора …

«ECHO a > b» … заставить интерпретатор ответить явно, в чем бред ? ))) … не является внутренней или внешней командой, исполняемой программой или пакетным файлом …

ECHO «a > b» … напечатает «a > b» , так как кавычки — отменяют действие оператора перенаправления > и попадают в область действия неявных кавычек ECHO, поэтому — тоже будут отображены …

ECHO a ^> b … напечатает a > b … экранировать только действие оператора перенаправления (среди текстовых символов) … В ответ — ECHO напечатает обычные символы, как эхо в горах — что крикнешь, то и услышишь ))) …

Интерфейс Windows командной строки

SET a=3

SET b=5

ECHO %a%>%b% … так как % попытался экранировать символ перенаправления > , а ECHO — не смогла сказать чего либо внятного — она отрапортовала, что : Режим вывода команд на экран (ECHO) включен … То есть — команда сообщила свой статус …

ECHO %a% > %b% … ничего, тишина ))) … Попробуем заставить CMD дать явный ответ …

«ECHO %a%>%b%» … «ECHO %a% > %b%» … echo 3>5 и echo 3 > 5 — действительно не являются никакими командами, а Эхо не может заместить или пере вычислить значение одним оператором — в другом …

ECHO %a%+=%b% … напечатает 3+=5 … это просто текст …

ECHO %a% … отобразит значение переменной a = 3 …

Однако, ECHO %a% > nul … не отобразит вывод Эхо, перенаправив его в специальный контроллер nul — это специальное устройство в операционной системе Windows, которое используется для отключения вывода текста в командной строке … нулевое устройство — есть, но не сохраняет вывод команд … что то вроде ассемблерной команды NOP — ничего не делать … Однако, ничего не делая, команда — тратит процессорное время, создаёт задержки, выравнивает блоки в памяти и вообще — является реальной командой с возможностью обращения к ней (программная заглушка) …

Однако, ECHO %a%>nul … Эхо снова сообщит свой статус, так как % снова попытается экранировать символ перенаправления и будет сбивать с толку интерпретатор данных и команд … Но, на самом деле, в обычном программном коде, подобная запись, без пробелов — практически не вызывает проблем, насколько я могу вспомнить … Какое значение имеет пробел в данных и командах BAT CMD ? …

Суть сравнения интерпретатора CMD и интерфейса Windows одного и того же выражения / окна командной строки — в том, что если неочевидно, к какому результату приведет действие той или иной команды, расположения спецсимволов и пробелов — лучше убедиться, в этом — заранее ))) …

Пробел в командах и данных BAT CMD.

Иногда, для красоты кода, в примерах программирования, команды, данные и спец символы управляющих конструкций — вводят через пробел …

SET a = 3 … результат ECHO %a% = 3 , но иногда может быть %a% = %a% , то есть — переменная не была пере / или — определена …

SET a = 3 ; SET a = 4 … результат ECHO %a% = 3 … Снова — бардак на раздаче … Эта ситуация может сложиться из-за неопределенного состояния регистров интерпретатора (предположение) после выполнения прошлых команд … Но, согласитесь, в этом — что-то есть и кроется какой-то нюанс ))) …

SET b=4 … ECHO %b% = 4 …

SET b=5 … ECHO %b% = 5 … Никаких проблем — не наблюдается … Сравните с предыдущим примером ECHO %a%>nul и ECHO %a% > nul …

Пробелы в командах BAT CMD имеют важное значение, поскольку они используются для разделения аргументов командной строки … В большинстве случаев пробелы между аргументами нужны, чтобы команда корректно выполнилась … Однако, есть некоторые случаи, когда в командах нужно использовать кавычки для защиты пробелов внутри аргументов …

Также пробелы — могут быть использованы в данных, передаваемых в команду … Если данные содержат пробелы, то их также нужно заключать в кавычки или экранировать символом ^ чтобы команда работала правильно …

Режим SetLocal EnableDelayedExpansion — может быть полезным и рекомендуется, так как позволяет использовать переменные — с пробелами внутри значений … В любом случае, использование пробелов в командах и данных в командной строке следует использовать — осторожно и — правильно экранировать символы, если это необходимо для корректной работы программного кода …

Программные файлы интерфейсы физического оборудования ПК.

В командах BAT CMD, кроме NUL — есть несколько других специальных файлов-устройств, которые могут использоваться в качестве контролов … Эти файлы-устройства предоставляют доступ к различным физическим устройствам компьютера через командную строку и могут быть использованы как входные и выходные интерфейсы для команд …

CON — консольный ввод / вывод, для ввода с клавиатуры и вывода на экран …

PRN — принтер, для вывода команд на принтер …

LPT1 (LPT2 , LPT3) — параллельные порты коммуникации ПК, в настоящее время устарели и могут быть задействованы через драйвера ОС адаптеров переходников USB — LPT …

COM1 (COM2 , [COM3 , COM4]) — последовательные порты ввода / вывода и обмена данными ПК c периферийными устройствами … В настоящее время — практически устарели, но ещё очень много софта и программ требует их для своей работы, и они могут быть задействованы через драйвера ОС широко распространенных версий адаптеров переходников USB — COM / RS-232 …

Различные наглядные примеры использования программных файлов физических устройств в командах BAT / CMD … COPY file.txt CON … DIR > LPT1 … ECHO %a% > COM1 … Однако — следует быть осторожными при использовании этих файлов-устройств, поскольку неверное использование может привести к непредсказуемым результатам, ошибкам устройства и прочим неожиданно / неприятным событиям …

Передача параметров между сценариями BAT CMD.

Для передачи параметров из одного .bat файла в другой, можно использовать оператор CALL … Эта команда вызывает один сценарий из другого, при этом некоторые данные можно передать, как входные параметры для вызываемого файла, до 9, через разделитель пробел …

CALL 2.bat aaa bbb ccc …

При запуске, BAT / CMD умеет принимать параметры %0 — %9, при этом %0 — уже занят текущим именем файла (текущим расположением пути запуска скрипта) …

CALL b.cmd … %0 = b.cmd ; остальные параметры — пустые (не определены) …

CALL b.cmd a b c d e f g h i j k l m n o … Пытаемся передать 15 параметров, и получаем … %0=b.cmd … %1=a … %2=b … %3=c … %4=d … %5=e … %6=f … %7=g … %8=h … %9=i … — это, то, что можно явно передать, как параметры … Но, если продолжить, то увидим : %10=a0 … … %11=a1 … %12=a2 … %13=a3 … %14=a4 … %15=a5 … Какие-то индексы неопределённых внутренних структур …

CALL b.cmd … Если же — вызвать сценарий скрипта — без параметров, но попытаться считать те же самые %0 — %15, то увидим — такую картину : b.cmd . . . . . . . . . 0 1 2 3 4 5 , где точки — это пустые, но осязаемые пробелы …

Модификатор %~1 используется для удаления любых кавычек, которые могут быть включены в параметр для защиты от пробелов … Нужные кавычки, также — передаются внутри кавычек, с последующим очищением внешних — модификатором %~ получения и преобразования входного параметра …

Упоминалось, что если параметр содержит знак = в начале имени — то от него невозможно отделаться никоим образом или способом … В моём случае на CMD Win7, это — не подтвердилось (=x обрезается до x ; кавычки — снимаются ) … Пример — ниже … Для удобства я располагаю его вертикально, чтобы было понятно, какой слева отправляемый параметр и справа — принимаемый …

%% … a.cmd … b.cmd

%0 … — … b.cmd

%1 … «a b» … «a b»

%2 … «c d» … «c d»

%3 … =e … e

%4 … «=f» … «=f»

%~5 … «=g» … =g

%6 … h … h

%7 … i … i

%8 … j … j

%9 … k … k

Несмотря на то, что внешне — всё работает исправно, сложные случаи параметров рекомендуется передавать — через внешние файлы …

Прочие особенности команд командной строки.

О сложности, неадекватности, неожиданности, непредсказуемости и неочевидности поведения команд командной строки, можно писать, если не вечно, то — много и долго ))) … Несмотря, на всю простоту и примитивность BAT CMD интерпретатора …

RANDOM.

Я не заметил никакой принципиальной разницы между %RANDOM% и !RANDOM!, хотя упоминается, что она — есть ))) …

SET.

Команда SET может неявно обрезать пробелы в начале и конце значения переменной, если ее определение задано с пробелами … Но я бы сильно не рекомендовал полагаться на неочевидность и непредсказуемость её поведения ))) …

SET a= 5 … ECHO %a% = пробел5 …

FOR.

В команде FOR имеется неявное поведение, когда переменная цикла $ может не подставляться, если она используется в блоке команд FOR сразу после DO — вернет только первый вариант %i, но не второй и третий … Не знаю, у меня — работает …

FOR %%I IN (1) DO ECHO %%I %%I %%I … ответ : 1 1 1 …

ECHO.

В команде ECHO есть неявный символ перевода строки, добавляющийся в конец строки — может создавать проблемы, если не учитывать его влияние …

ECHO /n aaa — запрет переноса строки — не работает, в моём случае … так и в справке по команде — нет этой опции ))) …

START.

Команда имеет неявное поведение, когда она используется для запуска графического интерфейса (GUI) … При запуске графического интерфейса с помощью команды START будет создан новый экземпляр командной строки, что может привести к непредвиденным результатам, если большинство команд ожидает выполнения — в той же командной строке …

DIR.

В случае с командой DIR, спецсимволы &, <, > или | — не требуют экранирования, так как они используются только для операций в командной строке, а не внутри команды DIR самой в себе …

Экранирование спецсимволов.

Действительно, при работе в языке BAT и CMD символы %, !, ^, «, &, ?, *, / — имеют особое значение … Для того чтобы использовать их в командной строке, необходимо использовать экранирование символов … Что, чем и как экранировать ? …

Символ ^ экранирует практически всё, включая самого себя … Символ ^ используется в CMD / BAT для экранирования символов …

Амперсанд &, оператор объединения команд в одной строке …

Угловые скобки < >, оператор перенаправления …

Вертикальная черта / штрих |, оператор конвейера …

Скобки ( ), символ группировки …

Звездочка *, шаблон подстановки имён файлов и папок …

Знак вопроса ?, маска для поиска файлов по шаблону имени …

Прямой слеш /, указатель опций команд …

Двойная кавычка «, указатель начала и конца строки … Кавычки — также пытаются, в меру сил — подавлять специальные операторы внутри обозначенной текстовой строки … Помните про её недостаточность, в случае с амперсандом SET «a=^&» … Также, подмечено, что если ECHO, вместо ответа — указывает свой статус (режим Эха включен), то заключение выражения в кавычки — лишь подтвердит, что указанной команды, исполняемого файла или сценария — не существует ))) … Плохая команда, можно сказать ))) …

Сами себя экранируют …

% экранирует %, и по мере возможности пытается экранировать некоторые управляющие символы, не разделённые пробелом …

! экранирует ! переменные в режиме SETLOCAL локального включения расширений функциональности команд интерпретатора CMD и разрешение отложенного раскрытия переменных … Отложенное (ленивое) раскрытие переменных EnableDelayedExpansion означает, что переменные будут раскрываться — не в момент выполнения команды, а в момент ее переопределения — в текущий момент времени…

И, уже известный ^ экранирует ^ …

Также отмечается, что если в переменную нужно внести значение с первым знаком равно =TestValue, то оно должно экранироваться нижним подчёркиванием, что вообще — совершенно неочевидно ))) … _=TestValue … По этой же причине — категорически не рекомендуется называть имена переменных — начиная с символа _ нижнего подчёркивания …

Раздел computer : список всех страниц …


Рейтинг 4.92/627:

13 / 13 / 0

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

Сообщений: 44

Пробелы в путях

15.09.2012, 18:15. Показов 129873. Ответов 27


Подскажите, как можно обойти проблему с использованием пробелов в имени пути? Проблема здесь вызвана использованием кавычек в параметрах, поэтому просто взять выражение в кавычки не получается. Ну я не нашла, по крайней мере способа…

C:\>cmd /c c:\test test\exiftool.exe -c «%.6f » -ee -p «$filename, $gpslatitude, $gpslongitude» c:\test tes\ >> c:\test test\log.log



0



cpp_developer

Эксперт

20123 / 5690 / 1417

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

Сообщений: 22,546

Блог

15.09.2012, 18:15

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

Запутался в путях
У меня стоит XAMPP в Linux Ubuntu. Путь начиная с файловой системы: opt/lampp/htdocs. В htdocs располагается основная папка сайта -…

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

Задача о непересекающихся путях
Не могу написать курсовую по этой теме. Как выявить проблему и написать задачи? И может кто нибудь знает литературу по этой теме? Я нашла…

27

Dragokas

18023 / 7726 / 892

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

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

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

15.09.2012, 22:19

Разве так не работает:

Bash
1
cmd /c "c:\test test\exiftool.exe" -c "%.6f " -ee -p "$filename, $gpslatitude, $gpslongitude" "c:\test tes\" >> "c:\test test\log.log"

И Вы точно уверены, что test tes — правильное имя для папки… ?



0



dilloYa

13 / 13 / 0

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

Сообщений: 44

15.09.2012, 23:06

 [ТС]

Dragokas, так не работает и спотыкается на первом же пробеле и пишет — «c:\test » не является внутренней программой. Единственно как мне удалось реализовать данное выражение, это через установку текущего каталога:

Bash
1
cd "c:\test test" && cmd /c exiftool.exe  -c "%.6f " -ee -p "$filename, $gpslatitude, $gpslongitude" "c:\test test\" >> "c:\test test\log.log"

Но такой вариант мне не подходит…Вы возможно догадались, что я застряла на вызове этой программы, пытаясь реализовать его из VB через Shell.



0



Dragokas

18023 / 7726 / 892

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

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

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

16.09.2012, 03:34

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

Bash
1
"c:\test test\exiftool.exe" -c "^%.6f " -ee -p "^$filename, ^$gpslatitude, ^$gpslongitude" "c:\test test\" >> "c:\test test\log.log"



0



dilloYa

13 / 13 / 0

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

Сообщений: 44

16.09.2012, 07:13

 [ТС]

нет, не получается и наверное таким путем вообще не реализуется. сделала через батник, единственно удвоив только знак процента. Все остальное в своем естественном виде

Bash
1
2
@ cd "c:\test 1"\
@ cmd /c exiftool.exe -c "%%.6f " -ee -p "$filename, $gpslatitude, $gpslongitude" "c:\1" >> "c:\test 1\log.log"

… сгенерировать батник с нужными параметрами и путями в VB не сложно и убить его после отработки. Хоть это и не красиво. Но как говорил один уважаемый форумчанин — любая работающая программа лучше любой неработающей



0



Dragokas

18023 / 7726 / 892

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

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

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

16.09.2012, 21:04

Описание к параметрам exiftool-а весьма большое. Сложно разобраться сразу.

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit
 
Function CmdLine()
CmdLine = "cmd /c c:\test\exiftool.exe -p ""$filename has date $dateTimeOriginal"" -q -f ""e:\3 3"" > ""e:\3 3\exif.log"""
End Function
 
Sub CMD_WSShell()
Dim WshShell As Object, ret&
Set WshShell = CreateObject("WScript.Shell")
ret = WshShell.Run(CmdLine, 1, True)
Set WshShell = Nothing
End Sub
 
Sub CmdShell()
Shell CmdLine
End Sub
 
Sub CmdCatch()
Dim WshExec As Object, TextStream As Object
Set WshExec = CreateObject("WScript.Shell").Exec(CmdLine)
Set TextStream = WshExec.stdout
While Not WshExec.stdout.AtEndOfStream
    Debug.Print WshExec.stdout.ReadLine()
Wend
set WshExec=nothing
set TextStream=nothing
End Sub

Здесь 3 способа запуска.
Последний Sub пишет содержимое консольного окна прямо в окно Immediate (View -> Immediate Window), так что можно даже отследить таким образом синтаксические ошибки, которые не успеваешь увидеть, т.к. DOS-окно быстро закрывается.
Вот еще полезная тема: Работа с командной строкой (1. FTP-сервер 2. Проверка наличия подключения)



1



Somebody

2838 / 1647 / 254

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

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

16.09.2012, 22:29

А так просто не работает?

Code
1
cmd /c ""c:\test test\exiftool.exe" -c "%.6f " -ee -p "$filename, $gpslatitude, $gpslongitude" c:\test tes\ >> "c:\test test\log.log""



1



18023 / 7726 / 892

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

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

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

16.09.2012, 22:44

Нет, так не будет работать. Проверил — неверный синтаксис.
Вторая кавычка для BASH всегда обычно воспринимается как завершение обрамления. Т.е. в Вашем случае команда CMD 2-й параметр распарсит как «»c:\test

Лично у меня вариант из поста № 2 ошибок не выдает (и не должен),
но не уверен что ТС прописала ключи в нужном виде, да и что должно получится особенно не вчитывался.



1



Somebody

2838 / 1647 / 254

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

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

16.09.2012, 22:57

Хм… У меня как раз без лишних кавычек не запускается:

Code
1
2
3
4
5
6
7
8
C:\>cmd /c "c:\test test\exiftool.exe" -c "%.6f " -ee -p "$filename, $gpslatitud
e, $gpslongitude" "c:\test tes\" >> "c:\test test\log.log"
"c:\test" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
 
C:\>cmd /c ""c:\test test\exiftool.exe" -c "%.6f " -ee -p "$filename, $gpslatitu
de, $gpslongitude" "c:\test tes\" >> "c:\test test\log.log""
[запустилось]

Что вроде как соответствует хелпу cmd:

Если указаны ключи /C или /K, то остальная часть командной строки после
такого ключа обрабатывается как командная строка, а обработка символов
кавычек («) ведется по следующим правилам:

1. Если выполняются все перечисленные ниже условия, то символы
кавычек в командной строке сохраняются:

— ключ /S отсутствует
— есть ровно два символа кавычек
— между ними нет других специальных символов, как то: &<>()@^|
— между ними имеются один или несколько пробелов
— строка, заключенная в кавычки, является именем исполнимого
файла.

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

(WinXP)



2



18023 / 7726 / 892

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

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

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

17.09.2012, 01:04

Читал. Но пункт 2 только сейчас до меня дошел.
Я наверно где-то ошибся. Проверил еще раз — нормально запускается (Win7).

Тогда для Visual Basic-a строка будет выглядеть так:
CmdLine = «cmd /c «»»»c:\test test\exiftool.exe»» -c «»%.6f «» -ee -p «»$filename, $gpslatitude, $gpslongitude»» «»c:\test tes\»» >> «»c:\test test\log.log»»»»»
Тоже проверил — работает.



0



13 / 13 / 0

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

Сообщений: 44

17.09.2012, 08:55

 [ТС]

Ребята, спсибо всем за участие! Обрамлять кавычками все выражение я тоже пробовала, потому что хелп тоже читала . Но теперь я разобралась в чем моя была ошибка. Надо было отложить на некоторое время проблему, тогда бы все сразу поняла, как сейчас. В какой то момент я сама вписала ошибку в виде добавления бэкслэша в параметре выбора целевого каталога — …»»c:\test test\«» >> «»c:\test test\log.log», а дальше продолжала работать с этой строкой , упорно списывая сообщение Error opening directory c:/test test» на очередную проблему с кавычками (из-за отсутствия в сообщении открывающей кавычки). В батнике же путь к каталогу немножко упростила до test 1 и бэкслэш не ставила и все заработало.. Ну тормоз

Добавлено через 2 минуты
Dragokas, спасибо за код, однозначно найдет применение



0



18023 / 7726 / 892

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

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

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

17.09.2012, 13:08

Уточните — т.е. там, где Я выделил красным, бекслэш нужно убрать
при использовании этой утилиты?



0



13 / 13 / 0

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

Сообщений: 44

17.09.2012, 17:41

 [ТС]

да, именно. tes это я сделала опечатку (недопечатку), а вот замыкающий бэкслэш там совсем не нужен и забрал у меня кучу времени
т.е. конечный вариант такой
C:\>cmd /c «»c:\test test\exiftool.exe» -c «%.6f » -ee -p «$filename, $gpslatitude, $gpslongitude» «c:\test test» >> «c:\test test\log.log»»
Dragokas, как вы и говорили, ошибка в синтаксисе



1



2 / 2 / 0

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

Сообщений: 1

20.06.2016, 11:59

Вот этот.
Длинныe имена в bat-файлах

Теперь поговорим о путях и пробелах. Первый способ избежать этой проблемы — использование короткого имени.

start C:\Program Files\Sound Club\scw.exe

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

номер папки с помощью символа ~. Так как папки Program Files и Sound Club у меня в единственном числе, получится следующее:

Program Files — Progra~1
Sound Club — SoundC~1
start C:\Progra~1\SoundC~1\scw.exe

Добавлено через 5 минут
Однако, в ряде случаев не работает ничего из вышеописанного. В таких случаях я могу посоветовать использовать команду cd. Переходим на системный раздел, затем с помощью cd в папку Program Files и запускаем программу (start):

%SystemDrive%
cd \Program Files\Sound Club\
start scw.exe



2



18023 / 7726 / 892

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

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

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

20.06.2016, 13:51

Правильно — это грамотно использовать кавычки (во 2-м посту ошибка, читаем комментарий Somebody).

Сообщение от ayurev87

Однако, в ряде случаев не работает ничего из вышеописанного. В таких случаях я могу посоветовать использовать команду cd. Переходим на системный раздел, затем с помощью cd в папку Program Files и запускаем программу (start):

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

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

Сообщение от ayurev87

В примере два имени с пробелами. Заменим их короткими. Правила создания коротких имен следующие: в коротком имени используются первые шесть символов имени без учета пробелов, после имени указывают порядковый номер папки с помощью символа ~. Так как папки Program Files и Sound Club у меня в единственном числе, получится следующее:

Это так, как правило, но не всегда, система иногда может выбрать и другое имя. Еще для примера, имена со знаками за пределами ASCII. (юникодные).

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



0



sam6780

3 / 3 / 1

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

Сообщений: 222

17.02.2018, 11:18

Много хороших примеров Но я просто столкнулся недавно с проблеммой пробелов в пути и долго копался в поисках правильного ответа… Для себя нашел ответ — «с кавычками».
Да, может это всем звестно, и не стоит внимания обращать на элементарные вещи, Но! Нигде нет написано Просто — что бы ясно и доступно, как для обычного пользователя, а везде как то все с длинными примерами — Немного Запутано (
Тогда просто решил написать короткий пример … , может кому пригодиться.

Например есть такая задача:

Нужно запустить файл Start.exe

Windows Batch file
1
start "%AppData%"\Start.exe

казалось бы, что Start.exe — должен запуститься без проблем.

Но не совем так…

Потому что кусок пути — «%AppData%»

предполагает примерной вот такой путь :

C:\Documents and Settings\User\Application Data

Отсюда видно, что наш путь с Пробелами! … Значит при исполнении — конечный файл

Start.exe — Запускаться Не будет!

Поэтому с помощью двух еллементарных кавычек

«»
— после команды start
убираем пробелы с нашего пути.

И наше выражение приобретает вид:

Windows Batch file
1
start "" "%AppData%"\Start.exe

Теперь файл Start.exe — нормально Запускается! Спасибо



0



18023 / 7726 / 892

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

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

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

17.02.2018, 18:12

sam6780, не из-за этого.



1



4339 / 2129 / 661

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

Сообщений: 6,823

18.02.2018, 05:39


Сообщение от sam6780

«%AppData%»\Start.exe

здесь осталось еще 2 проблемы



0



sam6780

3 / 3 / 1

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

Сообщений: 222

23.02.2018, 11:15

Здравствуйте…. Как раз стлокулся с проблеммой насущьной ) — На тему , что вы говорите… alpap и Dragokas


вот пример:

Windows Batch file
1
start "" "%AppData%"\file0_1\temp.vbs

Что хочешь делал — Но при запуске выдает мне глупую ошибку о невозможности реализации запуска из за не найденного файла (((
… А что тогда нехватает в этой строке для запуска temp.vbs. Я почему то уперто был уверен , что это все …



0



Joey

Джоуи

1082 / 644 / 240

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

Сообщений: 3,559

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

23.02.2018, 11:32

Сообщение от sam6780

«%AppData%»

Вы закрыли кавычки на полпути

Добавлено через 17 секунд

Windows Batch file
1
"%AppData%\file0_1\temp.vbs"



0



raxper

Эксперт

30234 / 6612 / 1498

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

Сообщений: 21,154

Блог

23.02.2018, 11:32

Помогаю со студенческими работами здесь

Makefile на путях с пробелами (кроссплатформенность)
Приветствую всех!

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

Слеши в путях при копировании файлов
Всем привет! понимаю тема избита но сколько не искал, не нашел толком ничего…смысл такой, берем несколько фаолв через SaveDialog, и…

Значение возвращается не при всех путях выполнения
Помогите пожалуйста.
Как сделать, чтобы функция возвращала делители? (Через void не получается, потому что мне результат надо выводить в…

Значение возвращается не при всех путях выполнения
Где ошибка?

#include &lt;iostream&gt;
#include &lt;stdio.h&gt;

using namespace std;

bool rekkurs(char*, int);
bool…

Поиск файла по известных системе путях (в x64 ОС)
Привет всем!

Скажите, а через PathFindOnPath к 64-битным папкам никак не пробиться?
Придется свою функцию писать?

Вроде все…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

20

Новые блоги и статьи

Все статьи  

Все блоги / 

Трансферное обучение с предобученными моделями в Keras с Python

AI_Generated 06.05.2025

Суть трансферного обучения проста: взять модель, которая уже научилась решать одну задачу, и адаптировать её для решения другой, похожей задачи. Мозг человека работает по схожему принципу. Изучив. . .

Циклические зависимости в C#: методы управления и устранения

stackOverflow 06.05.2025

Если вы хоть раз работали над не самым тривиальным проектом на C#, то наверняка сталкивались с той ситуацией, когда компилятор вдруг начинает сыпать странными ошибками о невозможности разрешить. . .

Как перейти от Waterfall к Agile

EggHead 06.05.2025

Каскадная модель разработки Waterfall — классический пример того, как благие намерения превращаются в организационный кошмар. Изначально созданная для упорядочивания хаоса и внесения предсказуемости. . .

Оптимизация SQL запросов — Продвинутые техники

Codd 06.05.2025

Интересно наблюдать эволюцию подходов к оптимизации. Двадцать лет назад всё сводилось к нескольким простым правилам: «Избегайте SELECT *», «Используйте индексы», «Не джойните слишком много таблиц». . . .

Создание микросервисов с gRPC и Protobuf в C++

bytestream 06.05.2025

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

Многопоточность и параллелизм в Python: потоки, процессы и гринлеты

py-thonny 06.05.2025

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

Конкурентность (concurrency) — это когда ваша программа умеет жонглировать. . .

Распределенное обучение с TensorFlow и Python

AI_Generated 05.05.2025

В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . .

CRUD API на C# и GraphQL

stackOverflow 05.05.2025

В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . .

Распознавание голоса и речи на C#

UnmanagedCoder 05.05.2025

Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .

Реализация своих итераторов в C++

NullReferenced 05.05.2025

Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .

Наверх

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Aimp skin windows 7
  • Vmware converter windows server 2003
  • Windows 10 usb camera driver windows
  • Raspberry pi windows server
  • Как установить windows на нетбук dexp