如何使用 Powershell 在 Dropbox 中递归地忽略文件
How to ignore files recursively in Dropbox using Powershell
我是一名 Node 开发人员,希望将我的所有工作都保存在 Dropbox 中,但 'node_modules' 大目录除外。我在 https://help.dropbox.com/files-folders/restore-delete/ignored-files:
中找到了一个 Powershell 代码,该代码选择性地忽略了 Dropbox 中存在的文件夹
Set-Content -Path 'C:\Users\yourname\Dropbox(Personal)\YourFileName.pdf' -Stream com.dropbox.ignored -Value 1
我想创建一个 Powershell 脚本来帮助我找到 Dropbox 下的所有 'node_modules' 目录,然后忽略它们。我真的需要你的帮助,因为我对Powershell真的了解不多。
通过互联网搜索,我编写了这个小代码片段来递归查找 Dropbox 文件夹中的所有 'node_modules' 目录。
$BaseDir = "C:\Users\giann\Dropbox\IdeaProjects"
$NameToFind = "node_modules"
$MyVariable = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -and $_.Name.EndsWith($NameToFind)}
我的问题是,如何合并这两个代码片段?你能给我指明正确的方向吗?
谢谢,非常感谢您的支持。
Note: Set-Content
requires the -Value
parameter. If you just want to set the stream without changing the content, use -Value $null
. It will not clear the contents of your file.
你就快完成了,你只需要在第二个块中使用你的 Get-ChildItem
命令的结果。您还可以在 Get-ChildItem
上使用 -Directory
参数来仅枚举目录而不枚举文件:
$BaseDir = "C:\Users\giann\Dropbox\IdeaProjects"
$NameToFind = "node_modules"
# Changed variable name for clarity, multiline for readability
$FoundFiles = Get-ChildItem $BaseDir -Directory -Recurse | Where-Object {
$_.Name.EndsWith($NameToFind)
}
foreach($file in $FoundFiles) { Set-Content -Path $file -Stream com.dropbox.ignored -Value $null }
Note: foreach
can be used in place of ForEach-Object
below but keep in mind the foreach
used outside of the pipeline is a statement and functions differently than the foreach => ForeEach-Object
cmdlet alias used inside of the pipeline. Read this article for more information on the differences between the foreach
statement and ForEach-Object
cmdlet.
如果您以后不关心使用 $FoundFiles
,您可以像这样合并最后两个表达式:
Get-ChildItem $BaseDir -Directory -Recurse | Where-Object {
$_.Name.EndsWith($NameToFind)
} | ForEach-Object { Set-Content -Path $_ -Stream com.dropbox.ignored -Value $null }
为了完整性和其他发现此问题并想知道如何在 Linux 上执行相同操作的人,如果 Dropbox 文档移动了在 Linux 上使用 Dropbox 执行此操作的命令是:
xattr -w com.dropbox.ignored 1 "$filePath"
我不确定 Set-Content
是否会像 xattr
那样在 Linux 上设置文件属性,但是上面的 is how Dropbox recommends doing it
.
我是一名 Node 开发人员,希望将我的所有工作都保存在 Dropbox 中,但 'node_modules' 大目录除外。我在 https://help.dropbox.com/files-folders/restore-delete/ignored-files:
中找到了一个 Powershell 代码,该代码选择性地忽略了 Dropbox 中存在的文件夹Set-Content -Path 'C:\Users\yourname\Dropbox(Personal)\YourFileName.pdf' -Stream com.dropbox.ignored -Value 1
我想创建一个 Powershell 脚本来帮助我找到 Dropbox 下的所有 'node_modules' 目录,然后忽略它们。我真的需要你的帮助,因为我对Powershell真的了解不多。
通过互联网搜索,我编写了这个小代码片段来递归查找 Dropbox 文件夹中的所有 'node_modules' 目录。
$BaseDir = "C:\Users\giann\Dropbox\IdeaProjects"
$NameToFind = "node_modules"
$MyVariable = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -and $_.Name.EndsWith($NameToFind)}
我的问题是,如何合并这两个代码片段?你能给我指明正确的方向吗?
谢谢,非常感谢您的支持。
Note:
Set-Content
requires the-Value
parameter. If you just want to set the stream without changing the content, use-Value $null
. It will not clear the contents of your file.
你就快完成了,你只需要在第二个块中使用你的 Get-ChildItem
命令的结果。您还可以在 Get-ChildItem
上使用 -Directory
参数来仅枚举目录而不枚举文件:
$BaseDir = "C:\Users\giann\Dropbox\IdeaProjects"
$NameToFind = "node_modules"
# Changed variable name for clarity, multiline for readability
$FoundFiles = Get-ChildItem $BaseDir -Directory -Recurse | Where-Object {
$_.Name.EndsWith($NameToFind)
}
foreach($file in $FoundFiles) { Set-Content -Path $file -Stream com.dropbox.ignored -Value $null }
Note:
foreach
can be used in place ofForEach-Object
below but keep in mind theforeach
used outside of the pipeline is a statement and functions differently than theforeach => ForeEach-Object
cmdlet alias used inside of the pipeline. Read this article for more information on the differences between theforeach
statement andForEach-Object
cmdlet.
如果您以后不关心使用 $FoundFiles
,您可以像这样合并最后两个表达式:
Get-ChildItem $BaseDir -Directory -Recurse | Where-Object {
$_.Name.EndsWith($NameToFind)
} | ForEach-Object { Set-Content -Path $_ -Stream com.dropbox.ignored -Value $null }
为了完整性和其他发现此问题并想知道如何在 Linux 上执行相同操作的人,如果 Dropbox 文档移动了在 Linux 上使用 Dropbox 执行此操作的命令是:
xattr -w com.dropbox.ignored 1 "$filePath"
我不确定 Set-Content
是否会像 xattr
那样在 Linux 上设置文件属性,但是上面的 is how Dropbox recommends doing it
.