如何使用PowerShell在所有空文件夹中创建空文件?

时间:2015-05-14 17:53:15

标签: powershell

我想在所有空文件夹中创建空文本文件。以下脚本将列出所有空子文件夹。

$a = Get-ChildItem D:\test -recurse | Where-Object {$_.PSIsContainer -eq $True}
$a | Where-Object {$_.GetFiles().Count -eq 0} | Select-Object FullName

如何迭代上述命令的输出并在其中创建空文本文件?

4 个答案:

答案 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;
}