我正在尝试使用任务计划程序使以下PowerShell脚本工作。问题是它不会删除任何文件。
当我手动运行它时,在删除文件之前需要确认。
Recurse parameter was not specified. If you continue, all children will be removed with the item. Are you sure you want
to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
如何编辑此脚本以删除文件而不进行任何确认,以便我可以使用任务管理器运行它?
#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "10"
#----- define folder where files are located ----#
$TargetFolder = "D:\Shares\Downloads\TV\AutoDL"
#----- define extension ----#
$Extension = "*.*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)
#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
write-host "Deleting File $File" -ForegroundColor "DarkRed"
Remove-Item $File.FullName | out-null
}
else
{
Write-Host "No more files to delete!" -foregroundcolor "Green"
}
}
答案 0 :(得分:7)
您需要将-Confirm:$false
添加到Remove-Item
命令以覆盖默认的确认行为。如果做不到这一点,请尝试添加-Force
。
答案 1 :(得分:3)
删除D:\FOLDER
上的文件文件夹\子文件夹(下面的示例),其中包含30天以上的所有文件。
Get-ChildItem -Path "D:\FOLDER\" -Recurse |? {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item -Recurse -Force -confirm:$false -Verbose
-Force -Confirm:$false
保证您每次删除文件或文件夹时都不必按Y
或A
。 -Verbose
显示正在删除的内容。
答案 2 :(得分:2)
我认为 var orderid = Ordersdetail[0]["OrderId"]!
var shippingadress = Ordersdetail[0]["ShippingAddress"]!
var total = Ordersdetail[0]["GrandTotal"]!
var subtotal = Ordersdetail[0]["SubTotal"]!
var tax = Ordersdetail[0]["Tax"]!
var shipping = Ordersdetail[0]["Shipping"]!
应该在没有任何提示的情况下工作。但事实并非如此。
要删除整个文件夹及其中的所有内容,不用任何提示,我必须使用GCI并升级。所以而不是:
Remove-Item -Path "C:\Temp\FolderToDelete" -Confirm:$false -Force
删除FolderToDelete中的所有内容,但不删除父文件夹。
要删除父文件夹及其中的所有内容而不提示,我做了:
Get-ChildItem -path "C:\Temp\FolderToDelete" | Remove-Item -Recurse -Confirm:$false -Force
Get-ChildItem -path "C:\Temp\" -Directory -Filter "FolderToDelete" | Remove-Item -Recurse -Confirm:$false -Force
中没有尾随'\'。
HTH
答案 3 :(得分:1)
您可以像这样简化脚本:
int g;
bool UserExists = false;
switch(Department_cmbBx.SelectedItem.ToString())
{
case "Office":
g = 1;
break;
case "Stores":
g = 2;
break;
case "Workshop":
g = 3;
break;
case "Management":
g = 4;
break;
case "Admin":
g = 5;
break;
default:
MessageBox.Show("error: an invalid value.");
break;
}
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand command = new OleDbCommand("select [Username] from LoginTable where Username=@Username" , connection))
{
command.Parameters.Add("@Username", Username_txtBx.Text);
connection.Open();
using(OleDbDataReader reader = command.ExecuteReader())
{
// If at least 1 row was returned, this means the user exists in the table.
while (reader.Read())
{
UserExists = true;
}
}
if (!UserExists)
{
// The user does not exists - you can create it.
command.Parameters.Clear();
command.CommandText = "insert into LoginTable([Username],[Password],[Group]) values (@Username,@Username,@G)";
command.Parameters.Add("@Username", Username_txtBx.Text);
command.Parameters.Add("@Password", "password");
command.Parameters.Add("@G", g);
command.ExecuteNonQuery();
}
else
{
// Show an error message - the user already exists
MessageBox.Show("The user you eneterd already exists.");
}
}
}
与-file
命令Get-Childitem
变量$Now
必须出来检查
if
添加到您的-Force
命令Remove-Item
批准的代码:
'\*.*'
答案 4 :(得分:1)
它说
未指定递归参数。如果继续,所有子项将与该项目一起删除。您确定要继续吗?
尝试:
Remove-Item ./folderToDelete -Force -Recurse
答案 5 :(得分:1)
Remove-Item foldertodelete -Recurse -Force -Confirm:$false
为我工作。
答案 6 :(得分:0)
这对我有用:
Get-ChildItem-路径“ FolderToDelete”-目录-递归|其中{$ _。LastWriteTime -le $(get-date).Adddays(-7)} | Remove-Item -recurse -force