Как мне указать C: \ Program Files без пробела для программ, которые не могут обрабатывать пробелы в путях к файлам? - PullRequest
42 голосов
/ 21 мая 2009

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

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

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

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

Ответы [ 14 ]

85 голосов
/ 21 мая 2009

вы должны быть в состоянии использовать

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

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

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

22 голосов
/ 28 августа 2017

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

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

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

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

7 голосов
/ 21 мая 2009

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

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

6 голосов
/ 20 апреля 2017

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

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

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

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

6 голосов
/ 21 мая 2009

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

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

5 голосов
/ 21 мая 2009

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

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

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

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

будет.

1 голос
/ 10 сентября 2018

Вы можете использовать следующие методы для указания 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.
1 голос
/ 21 мая 2009

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

1 голос
/ 21 мая 2009

номер

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

"C:\Program Files\Something"

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

0 голосов
/ 04 апреля 2017

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

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

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

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

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

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


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...