为超过 15,000 张照片文件创建单独的文本文件,每个文件的名称与照片相同

为超过 15,000 张照片文件创建单独的文本文件,每个文件的名称与照片相同

我的问题是,我的笔记本电脑上有超过 10,000 张照片文件,我想将它们传输到云端以腾出空间(并使笔记本电脑更快)。但这样做之后,我的搜索引擎“Everything”再也找不到它们了。问题 - 是否可以为每个文件获取一个与每个照片文件同名的单独文本文件?然后“Everything”可以通过搜索关键字(例如 - Peter home wedding)找到文本文件名,所以我知道我已经在云端拥有该文件。这同样适用于我拥有的 500 多个视频文件。将所有文件名放入一个文本文件中是不可能的。只用一个搜索词搜索该单个文本文件,需要几个小时才能得到一个结果。如果可以一次性完成,那就太好了。

答案1

是否可以创建与每个照片文件同名的单独文本文件?

尝试使用福尔菲斯

forfiles /P "C:\path\to\root\folder" /M *.jpg /S /C "cmd /c echo. > @fname.txt"

要在不创建文本文件的情况下测试命令:

forfiles /P "C:\path\to\root\folder" /M *.jpg /S /C "cmd /c echo @file"

分解

  • /P指定您想要使用的文件夹的路径。

  • /M搜索特定文件(例如所有带有 的 JPEG 文件*.jpg)。

  • /S递归搜索子目录。

  • /C指定对每个匹配文件执行的命令。

  • echo. > @fname.txt创建一个“空白”文件,其名称为当前文件名,减去其扩展名,加上.txt@fname占位符由 提供forfiles。在命令前加上前缀cmd /c是必要的,因为echo实际上是 的一部分cmd

注意事项

  • /P当和中有空格时,需要使用双引号/C

  • forfiles似乎对 Windows 10 中的占位符大写很挑剔。简而言之,避免使用大写的占位符(例如@fname不是@FNAME)。

  • echo. > @fname.txt创建的文件在技术上会占用磁盘空间(通常为 1KB)。其他方法从命令行创建文件,其中一些可以创建真正的 0 字节文件。

答案2

简单版本,创建一个文本文件,其基本名称与照片文件匹配,内容是关联照片文件的完整路径,使用起来很简单电源外壳

###   Path Variables ###
$Photos    = '<path to top-level picture folder(s)>'
$PhotoInfo = '<destination path for text file creation>'

###   Create destination directory if it doesn't exist   ###
If (!(Test-Path $PhotoInfo)) { mkdir $PhotoInfo }

###   (Here-String) + (-Split operator) = Easier editing of list
$PhotoExts = -Split @'
.jpg
.jpeg
.raw
'@   ###  Edit as desired

###   Text file creation loop   ###
Get-ChildItem $Photos -Recurse | Where 'Extension' -in $PhotoExts | ForEach {
    $_.FullName | Set-Content -LiteralPath ( '{0}\{1}.txt' -f $PhotoInfo , $_.BaseName )
}

如上所述,如果遇到重复的文件名,上述操作将会抛出错误 - 这是可能的,因为正如所写,脚本不会重新创建源路径的目录结构,而是以递归方式搜索。

如果你只是在控制台上敲击它,上面的循环可以缩短为:

gci $Photos -s | ? 'Extension' -in $PhotoExts | %{
    $_.FullName | sc -Lit "$PhotoInfo\$($_.BaseName).txt"
}

相关内容