A資料夾中有很多層子資料夾,
今天想把A資料夾中每一層子資料夾的檔案刪除,
並且將每一層子資料夾中名為x、y、z的資料夾名稱改名為a、b、c,
並且在有這些a、b、c資料夾的地方新增一個d資料夾,
目前小弟寫到語法如下,卡在「新增一個d資料夾」的地方不知該如何下手:
del /F /S /Q D:\A*.*
for /r D:\A\ %%a in (x) do rename %%a a
for /r D:\A\ %%a in (y) do rename %%a b
for /r D:\A\ %%a in (z) do rename %%a c
透過 Powershell.
以下另存為 test.ps1
在 cmd 下執行方式 "Powershell -File test.ps1"
在 powershell 下執行方式 " .\test.ps1"
cmd /c "del /F /S /Q d:\test\*.*"
cmd /c "for /r d:\test %a in (x) do rename %a a"
cmd /c "for /r d:\test %a in (y) do rename %a b"
cmd /c "for /r d:\test %a in (z) do rename %a c"
$dest='d:\test'
#主資料夾檢查是否有 abc 同時存在,若有,則建立 d
if ((Test-Path $dest\a ) -and (Test-Path $dest\b )-and (Test-Path $dest\c) )
{New-Item -ItemType directory -Path $dest\d -ErrorAction SilentlyContinue}
#列出所有資料夾物件
$folders=Get-ChildItem -Path $dest -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName
#檢查是否有 abc 同時存在,若有,則建立 d
foreach($a in $folders)
{
$AA=$a.Fullname+'\a'
$BB=$a.Fullname+'\b'
$CC=$a.Fullname+'\c'
$DD=$a.Fullname+'\d'
if ((Test-Path $AA ) -and (Test-Path $BB )-and (Test-Path $CC) )
{
New-Item -ItemType directory -Path $DD -ErrorAction SilentlyContinue
}
}
參考了一下,還是有點困難阿@@
主要還有卡在要新增的資料夾路徑是未知的@@
參考值行後,還是未執行新增一個d資料夾@@
我看執行好像只停在cmd /c "for /r D:\test %a in (x) do rename %a a"這一行,沒有執行後續的指令QQ
上面內容,全部存成一個副檔名為 d:\test.ps1 的檔案,
在 cmd 執行方式
powershell -File "d:\test.ps1"
OK了~~感謝
可以再請問一下嗎?為何將abc換成中文檔名就不行了呢@@
ps1 檔的格式要存成 UTF8 或 unicode.
http://blog.pulipuli.info/2018/08/big5utf-8-batch-convert-plain-text.html
感謝,成功了!