Вы можете перебирать файлы с помощью
for %x in (*) do ...
, что также намного надежнее, чем попытка перебрать вывод команды для этого варианта использования.
So
for %f in (A\*) do del "B\%~nxf"
или, если вам нужно это в командном файле вместо командной строки:
for %%f in (A\*) do del "B\%%~nxf"
%~nxf
возвращает только имя файла и расширение каждого файла, поскольку к нему будет добавлен префикс A\
, и вы хотите удалить его в B.
Добавить > nul 2>&1
для подавления любого вывода (сообщения об ошибках могут появляться при попытке удаления несуществующих файлов).
Просто для полноты вы можете фактически повторить вывод команды почти таким же образом:
for /f %x in ('some command') do ...
но есть несколько проблем с этим, и в случае итерации по dir
это редко требуется, поэтому я не рекомендую это.
И поскольку вы работаете в Windows 7, у вас также есть PowerShell:
Get-ChildItem A\* | ForEach-Object { Remove-Item ('B\' + $_.Name) }
или короче:
ls A\* | % { rm B\$($_.Name) }