xcopy не распознается как внутренняя или внешняя команда, действующая программа или пакетный файл

Cmd xcopy команда с unicode символами работает в windows console но не работает в php

Я хочу использовать следующую команду .

xcopy "E:Dropboxdbstore15957_тест_директ.fbx" "E:Dropboxdbstoretest15957_тест_директ.fbx"

Когда я использую эту команду в console, то все работает нормально, но когда вызываю из php, файл не копируется.

$command="echo f | xcopy "E:Dropboxdbstore15957_тест_директ.fbx" "E:Dropboxdbstoretest15957_тест_директ.fbx";

$result=exec($command,$out2,$ret2);

Я получаю out=0 File(s) copied ret=4 .
Хочу заметить, что когда я вызываю эту команду из console, все не латинские символы замениваются ?, но файл копируется и все работает прекрасно.
Что можно сделать, чтобы решить проблему с utf8 символами?

Xcopy не распознается как внутренняя или внешняя команда, действующая программа или пакетный файл

Это не проблема с Windows 7 или 8. На самом деле это проблема с приложениями, которые обновляют переменные среды, такие как PATH.
Путь хранится в реестре как ” расширяемое строковое значение “(REG_EXPAND_SZ), но многие приложения записывают его обратно в реестр как” строковое значение ” (REG_SZ). Если ваш путь содержит что-либо вроде %SYSTEMROOT%, это не будет расширено в C:Windows (или что у вас есть), если путь sotred в REG_SZ.

исправление просто отредактируйте свой путь вручную с панели управления. Вам нужно внести изменения (например, добавить a ; в конец пути), а затем применить его. Это исправит ваш путь в реестре, чтобы быть REG_EXPAND_SZ.
(Перейдите на панель управления системой и выберите дополнительные системные настройки. Отредактировать переменную среды PATH в нижнем поле, и это должно исправить.

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

Ошибка xcopy "недопустимы путь". использование русских символов в комманде xcopy.

Команда виндовой консоли (cmd) 

:/>  Утилита WMIC, часть 2 - методы и ключи |

XCOPY

гораздо лучше своего досовского собрата

COPY

тем, что позволяет копировать всё содержимое папки с подпапками, что не заменимо при написании bat-файлов для задач резервного копирования. И, если описание этой команды найти не сложно (например,

тут

), то описание ошибок практически невозможно.

Обычно после написания первого скрипта мы получаем ошибку “

Недопустимый путь

“.

Вызвана она может быть следующими причинами (в продолжении):

  • Русские символы в пути. Дело в том, что по умолчанию консоль работает с кодировкой OEM 866 , а блокнот c ANSI (windows 1251 для руссифицированной винды). Лечится указанием кодировки в начале скрипта chcp 1251 .Единственный минус – на нормальный вывод русских букв после этого без танцев с бубном не надейтесь (он-то по прежнему будет в oem-866).
  • Пробелы в пути. Если путь содержит пробелы, то его обязательно заключать в двойные кавычки “”. Да и вообще, проще выработать привычку всегда заключать путь в кавычки в команде xcopy.
  • Отсутствует маска файла. Еще одна распространенная ошибка: если надо копировать все содержимое папки, то маску все-равно надо задавать! В следующем виде: “*.*” Если путь заключён в кавычки, то делать это надо следующим образом: маска файла указывается после закрытия кавычки.

Пример:
chcp 1251
xcopy “c:Работа”*.* “d:Резервная копия” /Y /H

Данный bat -файл скопирует все содержимое папкиc:Работа в d:Резервная копия со скрытыми и системными файлами и перезаписью существующих.

Оставьте комментарий