我想在所有空文件夹中创建空文本文件。以下脚本将列出所有空子文件夹。
$a = Get-ChildItem D:\test -recurse | Where-Object {$_.PSIsContainer -eq $True}
$a | Where-Object {$_.GetFiles().Count -eq 0} | Select-Object FullName
如何迭代上述命令的输出并在其中创建空文本文件?
答案 0 :(得分:1)
你为自己做的答案中有太多的循环。我提供这个解决方案,它将在没有文件的所有目录中创建一个空文件(如果他们有文件夹,那么从你的解决方案中就可以了,所以我保持这个逻辑。)
Get-ChildItem -Recurse C:\temp |
Where-Object {$_.PSIsContainer -and ($_.GetFiles().Count -eq 0)} |
ForEach-Object{[void](New-Item -Path $_.FullName -Name "Touch.txt" -ItemType File)}
如果$_.PSIsContainer
为假,那么它就不会为检查文件的其他条件而烦恼。同时将New-Item
的输出转换为void以停止成功创建所有这些新文件的输出。
答案 1 :(得分:0)
以下代码对我有用。
$a = Get-ChildItem D:\test -recurse | Where-Object {$_.PSIsContainer -eq $True}
$path = $a | Where-Object {$_.GetFiles().Count -eq 0} | foreach {$_.FullName}
$a | Where-Object {$_.GetFiles().Count -eq 0} | foreach {$_.FullName}|ForEach-Object -Process {New-Item -Path $path -Name "testfile.txt" -Value "Test Value" -ItemType File }
答案 2 :(得分:0)
如何确保..这不会在目录中创建文件,目录中包含子目录。
即。应该在没有文件和子目录的目录中创建文件
答案 3 :(得分:0)
这对我有用..只有当目录既没有子目录或文件
时,它才会创建文件 final ArrayList<File> mySongs = findSongs(Environment.getExternalStorageDirectory());
items = new String[mySongs.size()];
for (int i = 0; i < mySongs.size(); i++) {
items[i] = mySongs.get(i).getName().toString().replace(".mp3", "").replace(".wav", "");
}
final CustomList adp = new CustomList(MainActivity.this, items, imageId);
adp.sort(new Comparator<String>() {
@Override
public int compare(String lhs, String rhs) {
return lhs.compareTo(rhs);
}
});
lv.setAdapter(adp);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
startActivity(new Intent(getApplicationContext(), Player.class).putExtra("pos", position).putExtra("songlist", mySongs));
overridePendingTransition(R.anim.anime_enter, R.anim.anime_exit);
}
});
public ArrayList<File> findSongs(File root) {
ArrayList<File> al = new ArrayList<File>();
File[] files = root.listFiles();
for (File singleFile : files) {
if (singleFile.isDirectory() && singleFile.isHidden()) {
al.addAll(findSongs(singleFile));
} else {
if (singleFile.getName().endsWith(".mp3") || singleFile.getName().endsWith(".wav")) {
al.add(singleFile);
}
}
}
return al;
}