배치 쉘은 파일로 적는게 아니라 쉘(명령 프롬프트)에서 직접 실행하는 것이다.
리눅스와 다르게 윈도우의 배치는 파일과 쉘에서의 문법이 조금 다를때가 있다.
Shell
for /f "tokens=*" %a in ('dir /b') do ren "%a" "WhateverYouWant_%a"
File
for /f "tokens=*" %%a in ('dir /b') do ren "%%a" "WhateverYouWant_%%a"
Get-ChildItem -Directory | ForEach-Object {
$sizeBytes = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum
$unit = "Bytes"
if ($sizeBytes -ge 1TB) {
$sizeBytes /= 1TB
$unit = "TB"
} elseif ($sizeBytes -ge 1GB) {
$sizeBytes /= 1GB
$unit = "GB"
} elseif ($sizeBytes -ge 1MB) {
$sizeBytes /= 1MB
$unit = "MB"
} elseif ($sizeBytes -ge 1KB) {
$sizeBytes /= 1KB
$unit = "KB"
}
[PSCustomObject]@{
Folder = $_.Name
Size = "{0:N2} {1}" -f $sizeBytes, $unit
}
} | Format-Table -AutoSize
powershell -command "Get-ChildItem -Directory | ForEach-Object { $sizeBytes = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum; $unit = 'Bytes'; if ($sizeBytes -ge 1TB) { $sizeBytes /= 1TB; $unit = 'TB' } elseif ($sizeBytes -ge 1GB) { $sizeBytes /= 1GB; $unit = 'GB' } elseif ($sizeBytes -ge 1MB) { $sizeBytes /= 1MB; $unit = 'MB' } elseif ($sizeBytes -ge 1KB) { $sizeBytes /= 1KB; $unit = 'KB' }; [PSCustomObject]@{ Folder = $_.Name; Size = '{0:N2} {1}' -f $sizeBytes, $unit } } | Format-Table -AutoSize"
xcopy <src> <dst>.*
을 쓰면 파일인지 디렉토리 인지 묻지 않는다.