Мне нужно конвертировать некоторые файлы .sh в .cmd, потому что я нахожусь под Windows - но с Mingw64 и некоторыми утилитами linux (такими как sed, grep и т.д ...).
Я борюсь с небольшой проблемой: у меня есть сценарий в .sh, который является путями Linux, поэтому с /
, например:
FILEPATH=/opt/My/Troublesome/Path
Поскольку я не хочу переписывать все пути, я просто скопировал / вставил их в .cmd следующим образом:
set "FILEPATH=/opt/My/Troublesome/Path"
Затем я создал каталог opt в C :, и Windows может найти этот путь. Я могу сделать cd %FILEPATH%
без проб.
Однако, copy
не так хорош. когда я пытаюсь copy %FILEPATH%/Myfile .
он жалуется на синтаксис. Когда я делаю то же самое с двойной кавычкой, он говорит, что файл не найден.
Я пытался использовать sed, чтобы изменить путь и скопировать его в одну строку, но мне не удается заставить его работать. я сделал:
echo "/opt/My/Troublesome/Path/Myfile ." | sed "s~\/~\\~g"
и это дает мне: \opt\MyTroublesome\Path\Myfile .
Так как это именно то, что я хочу, я пытался передать его для копирования, но это не работает (в любом случае, я никогда не был хорош с pipe):
echo "/opt/My/Troublesome/Path/Myfile ." | sed "s~\/~\\~g" | copy
Там написано неверный синтаксис. Я пробовал намного больше вещей, например:
copy < echo "/opt/My/Troublesome/Path/Myfile ." | sed "s~\/~\\~g"
но все еще не работает.
Более того, это то, что я пробовал в моей оболочке Mingw, не уверен, что изменится в скрипте с помощью переменной% FILEPATH%.
Есть идеи? Возможно ли это сделать в одну строку?
PS: так как я получил sed
, я почти уверен, что смогу получить cp
. Но я бы хотел, чтобы в моем .cmd было как можно меньше функций linux. sed
будет использоваться в нем позже, так что это нормально, потому что у окон нет эквивалента, но, поскольку copy
существует на окнах, нет смысла использовать cp