Как указать C:\Program Files без пробела в нем для программ, которые не могут обрабатывать пробелы в пути к файлам?

Конфигурационный файл нуждается в позиции другого файла,

но этот файл находится в папке "C:\Program Files",

и путь с пространством в нем не распознается,

Есть ли другой способ указать местоположение без пробела в нем?

Ответы

Ответ 1

вы должны иметь возможность использовать

  • "c:\Program Files" (обратите внимание на кавычки)
  • c:\PROGRA ~ 1 (обозначение короткого имени)

Попробуйте c: \ > dir/x (в оболочке dos)

Отображаются короткие имена сгенерированный для имен файлов не-8dot3. Формат имеет формат /N с короткое имя, вставленное перед длинным имя. Если короткое имя отсутствует, пробелы отображаются на своем месте.

Ответ 2

Никогда не указывайте это местоположение жестко. Используйте переменные среды %ProgramFiles% или %ProgramFiles(x86)%.

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

"%ProgramFiles%\theapp\app.exe"
"%ProgramFiles(x86)%\theapp\app.exe"

Кроме того, каталог может быть написан на языке, который вы не знаете. http://www.samlogic.net/articles/program-files-folder-different-languages.htm

>set|findstr /i /r ".*program.*="
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

Используйте эти команды, чтобы найти значения на компьютере. НЕ ЗАПИСЫВАЙТЕ их в программу или файл-скрипт .bat или .cmd. Используйте переменную.

set | findstr /R "^Program"
set | findstr /R "^Common"

Ответ 3

Используйте следующие обозначения:

  • Для " C:\Program Files" используйте " C:\PROGRA ~ 1"
  • Для " C:\Program Files (x86)" используйте " C:\PROGRA ~ 2"

Спасибо @lit за ваш идеальный ответ в комментарии ниже:

Используйте переменные окружения % ProgramFiles% и % ProgramFiles (x86)%

:

Ответ 4

Я думаю, что причина, по которой предполагают использование имени C:\PROGRA ~ 1, получила downvotes, состоит в том, что эти имена рассматриваются как устаревшая функция Windows, которую можно забыть, что также может быть нестабильным, по крайней мере, между различными установками, хотя, вероятно, не на той же машине.

Кроме того, как заметил кто-то в комментарии к другому ответу, Windows может быть настроена так, чтобы не иметь имен устаревшей версии 8.3 в файловой системе вообще.

Ответ 5

В оболочке Windows (при использовании CMD.exe) используется% ProgramFiles%, чтобы указать папку Program Files, независимо от того, где она находится. Так как стандартный файловый менеджер Windows учитывает такие переменные среды, как это, если программа была хорошо написана, она должна поддерживать это.

Кроме того, можно было бы использовать относительные адреса. Если установленная вами программа установлена ​​правильно, она уже должна находиться в папке Program Files, поэтому вы можете просто ссылаться на файл конфигурации как. \Config_file.txt, если она находится в том же каталоге, что и программа, или.. \other_program\config_file.txt, если его в каталоге отличается от другой программы. Это применимо не только к Windows, но и практически для каждой современной операционной системы и будет работать правильно, если у вас установлен "Start In", или вы запускаете его непосредственно из своей папки.

Ответ 6

Должен быть способ использования полного пути c:\program files. Часто он включает инкапсуляцию строки в кавычки. Например, в командной строке windows;

c:\program files\Internet Explorer\iexplore.exe 

не запускается Internet Explorer, но

"c:\program files\Internet Explorer\iexplore.exe" 

будет.

Ответ 7

Вы можете попробовать использовать короткое имя файла (возможно, c:\PROGRA~1), но вы действительно не рассказываете нам много деталей.

Другой возможной возможностью было бы поставить кавычки по всему пути, "c:\program files\Path\configfile.ini"

Ответ 8

Нет.

Иногда вы можете указать имя файла.

"C:\Program Files\Something"

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

Ответ 9

Попробуйте окружить путь в кавычках. i.e "C:\Program Files\Appname\config.file"

Ответ 10

Вы можете использовать следующие методы для указания C:\Program Files без пробела для программ, которые не могут обрабатывать пробелы в путях к файлам:

'Path to Continuum Reports Subdirectory - Note use DOS equivalent (no spaces)
RepPath = "c:\progra~1\continuum_reports\" or
RepPath = C:\Program Files\Continuum_Reports  'si es para 64 bits.

' Path to Continuum Reports Subdirectory - Note use DOS equivalent (no spaces)
RepPath = "c:\progra~2\continuum_reports\" 'or
RepPath = C:\Program Files (x86)\Continuum_Reports  'si es para 32 bits.

Ответ 11

Вы можете попробовать:

C:\PROGRA~1

Ответ 12

c:\progra~1

В 64-битных окнах, возможно

c:\progra~2

Ответ 13

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

dir c: \/ad/x

Это предоставит список только каталогов, а также предоставит их "короткие имена".

Ответ 14

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

В командной строке, в определении ярлыка, в файлах bat и в большинстве программ, используя путь api в Windows, вы можете попробовать окружить путь к вашему файлу двойными кавычками, подобными этому:

PATH="C:\Program Files\MyApp\MyFile.dat"

Для той же категории программного обеспечения вы также можете использовать короткое имя (унаследованное от DOS и ограниченное до 8 символов для каждого уровня

PATH=C:\PROGRA~1\MyApp\MyFile.dat

В файлах свойств java и вам нужно либо избежать пробела, добавив \before (обратите внимание, что вам также нужно сбежать\или заменить его на /):

path=c:/Program\ Files/Myapp/MyFile.dat
or 
path=c:\Program\ Files\MyApp\MyFile.dat

Ответ 15

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

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

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

Вот как вы это делаете:

  • Запустите cmd от имени администратора
  • Используйте эту команду: mklink /D "C:\LinkToProgramFiles" "C:\Program Files"

А затем вы начинаете использовать "C:\LinkToProgramFiles" в приложениях, которые не могут обрабатывать пробелы. (Эту ссылку можно увидеть в проводнике Windows как папку с символом ярлыка)


Будьте очень осторожны, чтобы не создавать круговые ссылки, если вы слишком много играете с этим.

Ответ 16

Использовать сгенерированное короткое имя (C:\Progra ~ 1) или окружать путь кавычками.

Ответ 17

Вы можете просто создать папку ProgramFiles на локальном D или локальном C, чтобы установить те приложения, которые могут быть установлены в имя папки, в которой есть SPACES/Characters.