Ответ 1
Вы можете перебирать файлы с помощью
for %x in (*) do ...
который также намного более надежный, чем попытка выполнить итерацию вывода команды для этого случая использования.
Итак,
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) }