Мне нужно выполнить с ansible следующую команду: FOR / f "skip = 7 delims =" %% a IN ('DIR D: \ backups \ auto \ / od / b') DO RD / S / Q "D: \ Backups \ авто \ %% A» - PullRequest
0 голосов
/ 22 марта 2020

Мне нужно выполнить с ansible следующую команду:

FOR /f "skip=7 delims=" %%a IN (' DIR D:\backups\auto\ /o-d /b') DO RD /S /Q "D:\backups\auto\%%a"

пробовал это:

- name: clear old backups
  win_command: 
    FOR /f "skip=7 delims=" %%a IN (' DIR D:\backups\auto\ /o-d /b') DO RD /S /Q "D:\backups\auto\%%a"

1 Ответ

0 голосов
/ 22 марта 2020

Хотя в документации win_command: об этом ничего не говорится, на основании чтения win_shell: документации видно, что PowerShell.exe используется по умолчанию, а не CMD.exe

В документах win_shell: указано, что вы можете явно выбрать использование CMD.exe вместо powershell, указав executable: cmd.exe в args: для задачи:

- name: clear old backups
  win_shell: 
    FOR /f "skip=7 delims=" %%a IN (' DIR D:\backups\auto\ /o-d /b') DO RD /S /Q "D:\backups\auto\%%a"
  args:
    executable: cmd.exe

Для По той же причине, по которой win_command: не разрешает операторы оболочки, необходимо использовать win_shell:, чтобы иметь доступ к встроенным функциям оболочки, таким как FOR и IF выражения

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