Я пытаюсь использовать команду powershell из здесь в командном файле.Я хочу, чтобы он просматривал папку, печатая имя и размер каждой папки.Что мне не хватает в моем коде, чтобы заставить его работать?
Я пытался использовать цитаты повсюду.Я также пытался использовать escape-символы.Возможно, это потому, что я новичок в написании командных файлов, но не могу понять.
@echo off
set "my_path=%~dp0"
set file_size_command=switch((ls -r|measure -s Length).Sum) {^
{$_ -gt 1GB} {'{0:0.0} GiB' -f ($_/1GB)^
break}^
{$_ -gt 1MB} {'{0:0.0} MiB' -f ($_/1MB)^
break}^
{$_ -gt 1KB} {'{0:0.0} KiB' -f ($_/1KB)^
break}^
default { "$_ bytes" }^
}
for /d %%a in ("%my_path%\*") do (
echo Folder name: %%~nxa
PowerShell.exe -noexit -command %file_size_command%
)
pause
rem Let the user view this
Предполагается, что нужно просто напечатать имя каждой папки и затем размер папки.В настоящее время он интерпретирует {$ _ как команду.