powershell Windows比较文件名并删除文件名的1个版本

mv1qrgav  于 2022-11-10  发布在  Shell
关注(0)|答案(3)|浏览(184)

我有数百个文件夹,其中有多个名为filename.ext的文件,也有另一个名为filename.ext.url的文件
我需要一种方法来检查是否存在filename.pdf.url是否存在filename.ext。如果它们都存在,则删除filename.ext.url
我不能只搜索并删除所有*.url文件,因为如果正常文件不存在,则需要它们
然后,我需要在特定目录的所有子目录中重复此操作。
我不介意它是批处理脚本、PowerShell脚本或任何其他方式。我只是被怎么做我想做的事难住了。
目前,我正在逐个文件夹地进行操作,手动比较文件名、文件大小和文件图标。

sqyvllje

sqyvllje1#

foreach ($file in ls -Recurse c:\files\*.url) {
    if (ls -ErrorAction Ignore "$($file.PSParentPath)\$($file.basename)") {
        remove-item $file.fullname -whatif
    }
}

准备好删除时删除Whatif。基本名称删除扩展名,因此如果它们都是.ext.url,则它将检查该文件是否存在。它还会删除路径,因此我们也会拉出该路径。
另一种方式(更符合您的解释)类似于

foreach ($file in ls -Recurse "c:\files\*.url") {
    ### replacing '.url$' means .url at the end of the line in Regex
    if (ls -ErrorAction Ignore ($file.FullName -replace '\.url$')) {
        remove-item $file.fullname -whatif
    }
}
hsvhsicv

hsvhsicv2#

for /r "startingdirectoryname" %b in (*.url) do if exist "%~dpnb" ECHO del "%b"

预计将直接从提示符中执行此操作。如果需求是批处理行,则每个%需要加倍(即%%)。
这还假设whatever.ext文件与whatever.ext.url文件位于同一目录中。
请注意,要删除的文件名将仅被echo编辑到控制台。要实际删除文件,请删除关键字echo
首先针对测试目录进行测试!
[未经测试]

qhhrdooz

qhhrdooz3#

要检查“filename.ext”,请检查“filename.ext.”,它们是相同的文件。
在cmd.exe中,您可以执行“If Exist”filename.ext.“call:doit

相关问题