Ignoring folder with large number of directories
I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this
Get-ChildItem -Path $targetPath -Directory -Recurse |
Select-Object -ExpandProperty "Fullname" |
ForEach-Object {
#log folder name
}
However I want the script to skip directories that have a configured number of folders nested inside.
For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder C/Folder CA #DO NOT CAPTURE
Folder C/Folder CB #DO NOT CAPTURE
Folder C/Folder CC #DO NOT CAPTURE
Folder C/Folder CD #DO NOT CAPTURE
Folder D
So I would like my output of the script to be
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder D
How can I edit my script to achieve this?
powershell
add a comment |
I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this
Get-ChildItem -Path $targetPath -Directory -Recurse |
Select-Object -ExpandProperty "Fullname" |
ForEach-Object {
#log folder name
}
However I want the script to skip directories that have a configured number of folders nested inside.
For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder C/Folder CA #DO NOT CAPTURE
Folder C/Folder CB #DO NOT CAPTURE
Folder C/Folder CC #DO NOT CAPTURE
Folder C/Folder CD #DO NOT CAPTURE
Folder D
So I would like my output of the script to be
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder D
How can I edit my script to achieve this?
powershell
add a comment |
I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this
Get-ChildItem -Path $targetPath -Directory -Recurse |
Select-Object -ExpandProperty "Fullname" |
ForEach-Object {
#log folder name
}
However I want the script to skip directories that have a configured number of folders nested inside.
For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder C/Folder CA #DO NOT CAPTURE
Folder C/Folder CB #DO NOT CAPTURE
Folder C/Folder CC #DO NOT CAPTURE
Folder C/Folder CD #DO NOT CAPTURE
Folder D
So I would like my output of the script to be
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder D
How can I edit my script to achieve this?
powershell
I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this
Get-ChildItem -Path $targetPath -Directory -Recurse |
Select-Object -ExpandProperty "Fullname" |
ForEach-Object {
#log folder name
}
However I want the script to skip directories that have a configured number of folders nested inside.
For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder C/Folder CA #DO NOT CAPTURE
Folder C/Folder CB #DO NOT CAPTURE
Folder C/Folder CC #DO NOT CAPTURE
Folder C/Folder CD #DO NOT CAPTURE
Folder D
So I would like my output of the script to be
Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder D
How can I edit my script to achieve this?
powershell
powershell
edited Nov 16 '18 at 10:45
Ansgar Wiechers
146k13132190
146k13132190
asked Nov 16 '18 at 10:29
L1ngL1ng
154
154
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
If you just want to exclude folders on the top level you could do something like this:
Get-ChildItem -Path $targetPath -Directory | Where-Object {
(Get-ChildItem $_.FullName -Directory).Count -le 3
} | ForEach-Object {
Get-ChildItem $_.FullName -Directory -Recurse
} | Select-Object -Expand Fullname
If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem
does not provide that kind of filtering mechanism.
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335963%2fignoring-folder-with-large-number-of-directories%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you just want to exclude folders on the top level you could do something like this:
Get-ChildItem -Path $targetPath -Directory | Where-Object {
(Get-ChildItem $_.FullName -Directory).Count -le 3
} | ForEach-Object {
Get-ChildItem $_.FullName -Directory -Recurse
} | Select-Object -Expand Fullname
If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem
does not provide that kind of filtering mechanism.
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
add a comment |
If you just want to exclude folders on the top level you could do something like this:
Get-ChildItem -Path $targetPath -Directory | Where-Object {
(Get-ChildItem $_.FullName -Directory).Count -le 3
} | ForEach-Object {
Get-ChildItem $_.FullName -Directory -Recurse
} | Select-Object -Expand Fullname
If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem
does not provide that kind of filtering mechanism.
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
add a comment |
If you just want to exclude folders on the top level you could do something like this:
Get-ChildItem -Path $targetPath -Directory | Where-Object {
(Get-ChildItem $_.FullName -Directory).Count -le 3
} | ForEach-Object {
Get-ChildItem $_.FullName -Directory -Recurse
} | Select-Object -Expand Fullname
If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem
does not provide that kind of filtering mechanism.
If you just want to exclude folders on the top level you could do something like this:
Get-ChildItem -Path $targetPath -Directory | Where-Object {
(Get-ChildItem $_.FullName -Directory).Count -le 3
} | ForEach-Object {
Get-ChildItem $_.FullName -Directory -Recurse
} | Select-Object -Expand Fullname
If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem
does not provide that kind of filtering mechanism.
answered Nov 16 '18 at 10:50
Ansgar WiechersAnsgar Wiechers
146k13132190
146k13132190
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
add a comment |
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
Thank you - I had to resort to writing my own recursion.
– L1ng
Nov 20 '18 at 21:47
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335963%2fignoring-folder-with-large-number-of-directories%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown