好吧,所以我有大量的電子書和其他文件,我想按作者姓名排序到文件夾中。我通常在Linux中執行此操作的方式不適用於我的Windows 8筆記本電腦。我一直在使用Powershell,但是如果在Python中有更好的方法或者使用bash腳本,我願意用最簡單的方法來完成這個任務。我需要它遞歸地工作,因爲有很多子文件夾,(很多都是按流派排序的)。我到目前爲止所嘗試的是:用特定名稱移動所有文件(排序)WINDOWS 8
mkdir 'C:\Users\Amanda\Downloads\BOOKS\Peter Straub'
Copy-Item 'C:\Users\Amanda\Downloads\*Peter Straub*' -recurse `
'C:\Users\Amanda\Downloads\BOOKS\Peter Straub'
不幸的是,我只能查找名爲peter straub的目錄。如果我將其更改爲〜\ Downloads * Peter Straub *。*它不起作用。我嘗試過使用-match和-contains,但是它們都無法正常工作。我對Windows 8中的腳本編程相對來說比較陌生,並且非常感謝任何人的幫助。我想實現read-host -prompt,所以我不必每次運行腳本都要編輯腳本。我希望它實際上移動文件不只是複製,但Move-Item沒有遞歸選項。所以我可以以某種方式將腳本複製並刪除原始文件。我也試過這個:
$author = (read-host -prompt 'Enter Name')
mkdir 'C:\Users\Amanda\Downloads\BOOKS\$author'
Copy-Item 'C:\Users\Amanda\Downloads\*$author*.*' -Recurse | Remove-Item
但是這也行不通。我希望得到像這樣的東西在自動化批處理中工作。
所以基本上我想選擇作者姓名,使用該作者姓名創建一個新目錄,然後搜索並將包含該作者姓名的所有文件移動到新目錄中。
編輯 :::: 所以基本上我結合了三個答案的建議,我得到了什麼完美的作品!這裏是工作的蝙蝠:
@echo off &setlocal
set /p "Author=Enter Name: "
md "%author%"
for /f "delims==" %%i in ('dir C:\Users\Amanda\Downloads /b /s^|find "%author%" /i') do (move "%%i" "C:\Users\Amanda\Downloads\BOOKS\%author%")
再次編輯: 於是,我就修改後的一個嘗試,並得到它的接受空間:
@echo off &setlocal
set /p "Author=Please enter an Author: "
md "C:\Users\Amanda\Downloads\BOOKS\%author%"
for /f "delims==" %%i in ('dir C:\Users\Amanda\Downloads /b /s^|find "%author: =.%" /i') do (move "%%i" "C:\Users\Amanda\Downloads\BOOKS\%author%")
它正常工作在使目錄但它不移動的文件。
錯誤: 複製-項目:找不到路徑的一部分「C:\用戶\阿曼達\下載\ BOOKS \斯蒂芬金\」。 在行:12字符:3 +拷貝項目$ _全名 「$ DESTDIR \」 + ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ + CategoryInfo:NotSpecified:(:) [Copy-Item],DirectoryNotFoundException + FullyQualifiedErrorId:System.IO.DirectoryNotFoundException,Microsoft.PowerShell.Commands.CopyItemCommand – amandakay10
在$ $ author中有尾隨空格'。在將字符串分配給變量之前修剪字符串。 –
我現在看到了。謝謝。但現在它只是說拒絕了權限,但這是一個無關緊要的問題。我需要找到哪些文件被阻止。 – amandakay10