我有一个文件夹结构,例如,100个文件夹。每个文件夹中都有200个文件。
我想删除(通过计划任务)每个文件夹中的所有文件,但保留最后10个版本。
我正试图提升Powershell,所以我猜这应该很简单。我创建了这个脚本,
public class AudioCapturer {
AudioRecord recorder;
private int channelConfig = AudioFormat.CHANNEL_IN_STEREO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
private static final int AUDIO_SAMPLE_RATE = 8000;
private static int[] mSampleRates = new int[] { 8000, 11025, 22050, 44100 };
int bufferSize = AudioRecord.getMinBufferSize(mSampleRates[3], channelConfig, audioFormat);
protected void Start() {
new Thread(new Runnable() {
public void run() {
recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, mSampleRates[3], channelConfig, audioFormat, bufferSize);
Log.v("RECORDER","" +recorder.getState());
recorder.startRecording();
while(recorder.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING)
{
byte [] buffer = new byte[bufferSize];
Log.v("READ RESULT","" + recorder.read(buffer, 0, buffer.length));
}
}
}).start();
}
}
它似乎循环遍历每个文件夹,但保留整个文件夹结构的最后10个文件,而不是每个文件夹。所以一些文件夹有0个文件,有些可能有2个文件,有些可能有8个文件。
任何指针都将不胜感激
谢谢!
答案 0 :(得分:0)
如果您确实需要拥有该CSV,则只需将Get-ChildItem -Recurse
修改为Get-ChildItem $row -recurse
即可。但是,如果您不需要创建CSV,则可以将其删除,并将第一个Get-ChildItem
的结果导入下一个操作。
$Directory = "D:\Octopus\Packages"
$Keep = "10"
Get-ChildItem $Directory| ?{ $_.PSIsContainer } | Select-Object FullName |
ForEach-object {Get-ChildItem $_.fullname -Recurse |
where{-not $_.PsIsContainer}| sort CreationTime -desc |
select -Skip $Keep | Remove-Item -Force }