windows - 移动具有特定名称的所有文件(排序)WINDOWS 8

标签 windows powershell batch-file wildcard

好的,我有大量的电子书和其他文件,我想按作者姓名分类到文件夹中。我通常在 Linux 中执行此操作的方式不适用于我的 Windows 8 笔记本电脑。我一直在使用 Powershell,但如果在 Python 中有更好的方法或使用 bash 脚本,我愿意使用任何可以以最简单的方式完成此操作的方法。我需要它递归工作,因为有很多子文件夹(很多都是按流派排序的)。到目前为止我尝试过的是:

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 中的脚本编写比较陌生,非常感谢任何人的帮助。我想实现读取主机提示,这样我就不必在每次运行脚本时都对其进行编辑。我希望它实际上移动文件,而不仅仅是复制,但 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 

但这也没有用。我很想得到这样的东西在自动批处理中工作。

所以基本上我想选择一个作者姓名,使用该作者姓名创建一个新目录,然后搜索并将包含该作者姓名的所有文件移动到新目录中。

编辑:::: 所以基本上我结合了三个答案的建议,我得到的东西非常有效!这是有效的 .bat:

@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%")

它在创建目录时可以正常工作,但不会移动文件。

最佳答案

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^|findstr "%author: =*%"') do (move "%%i" "C:\Users\Amanda\Downloads\BOOKS\%author%"

这应该有效。如果没有,请发表评论,以便我进行修复。

关于windows - 移动具有特定名称的所有文件(排序)WINDOWS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19549698/

相关文章:

windows - 如何在 PowerShell 中的子文件夹中点源函数

powershell - 无法使用管道将参数发送到 PowerShell 脚本

PowerShell管道

php - 为什么 PHP 执行时会出现 'node' ' 无法识别为内部或外部命令、可运行程序或批处理文件?

batch-file - 如何在 Windows 命令提示符中将多种颜色应用到 "Lines"?

windows - 油漆桶光标?

windows - 如何在 Windows 上运行我的 bash 程序?

windows - 批量 EXIT 后跟 '|' - 这是什么目的?

c++ - winldap 无法使用 ssl 连接到 openldap

powershell - 使用 Set-Clipboard 在 PowerShell 中复制多个文件