Ошибка командной опции PuTTY -m с «не удается открыть… файл » в Windows 7

#batch-file #windows-7 #putty

#пакетный файл #windows-7 #putty

Вопрос:

Я пытаюсь выполнить автоматический вход в PuTTY с помощью пакетного файла. У меня есть это:

 start "title" "C:Program FilesPuTTYputty.exe" "server_name@server_IP" -pw "password" -m "commands_to_execute.txt"
  

На моем компьютере с Windows 10 все работает, но в Windows 7 командная опция -m не работает. Сообщение об ошибке:

не удается открыть командный файл:»commands_to_execute.txt «

Я попытался изменить все пути на «C:Program Files PuTTY», установка рабочего каталога /D , работа в фактическом каталоге, и я также добавляю путь к переменным среды в:

Дополнительные настройки системы> Переменные среды

Я также использовал plink вместо putty.

Что происходит?

Ответ №1:

Очень маловероятно, что ваша проблема имеет какое-либо отношение к Windows 7 против Windows 10.

Скорее всего, в рабочем каталоге для выполнения вашего пакетного файла в Windows 7 не указана папка, в которой хранится commands_to_execute.txt файл.

Возможные решения:

  • Установите рабочий каталог так же, как вы установили его в Windows 10

  • Используйте полный путь к файлу скрипта:

     -m "C:pathtocommands_to_execute.txt"
      
  • Явно задайте рабочий каталог для PuTTY, используя:

     start "title" /D "C:pathto" "C:Program FilesPuTTYputty.exe"  ...
      
  • Или, если файл сценария находится в той же папке, что и ваш командный файл, вы можете использовать:

     start "title" /D "%~dp0" "C:Program FilesPuTTYputty.exe"  ...
      

Ответ №2:

вам необходимо использовать plink.exe для этого не putty.exe просто замените:

 start "title" "C:Program FilesPuTTYplink.exe" "server_name@server_IP" -pw "password" -m "commands_to_execute.txt"
  

или сделайте это еще проще:

 cd C:Program FilesPuTTY
plink.exe -ssh pi@192.168.1.166 -P 22 -pw P@SSWRD ~/script.sh
plink.exe -ssh pi@192.168.1.166 -P 22 -pw P@SSWRD -m commands.txt 
pause
  

любая из двух строк работает.

Комментарии:

1. При использовании CD команды вам действительно следует использовать ее /D параметр, если только не известно, что «текущий диск» на момент его использования не изменился .

2. Хотя вы, возможно, правы с Plink (хотя мы на самом деле не знаем, что задумал OP), вы вообще не решаете проблему OP. В вашем коде будет та же проблема, что и в OP.

3. Да, проблема все еще существует. Спасибо

4. вы пробовали использовать полное расположение каталога? какие привилегии разрешены для файла .bat?

5. Да, я пытался. Файлы .bat и .txt имеют все разрешенные привилегии