所以我试图重命名一堆MSSQL备份,如:
DBName_backup_2017_12_20_564451321_567987465.bak
像
这样的东西DBName.bak
但也要进行安全检查,以确保如果已经DBName.bak
已经采取DBName_1.bak
Get-ChildItem *_*.bak | % {
# Set the new name, replace everything after the first underscore '_' with
# '.bak'
$newName = &{$_.Name -replace $_.Name.Substring($_.Name.IndexOf("_")), '.bak'}
# Check if new name exists
for ($cnt = 1; (Test-Path $newName) -eq $true; $cnt++) {
# If it already exists add '_' and a number check again until unused
# filename is found
$newName = &{$newName -replace '.bak', "_$cnt.bak"}
}
# Rename file to new filename. Uncomment WhatIf for testing.
Rename-Item -Path $_ -NewName $newName #-WhatIf
}
。其中1将是增量变量,直到存在有效的未使用文件名。
我能够使用以下代码完成:
Test-Path
我现在要做的是,用一条管道来一条线,但我没有运气。特别是使用app.post('/photos', upload.any(), function(solicitud, respuesta){
//console.log(solicitud.body);
if(solicitud.body.password == "emmanuel_1234567"){
var data = {
title: solicitud.body.title,
description: solicitud.body.description,
imageUrl: 'images/carousel/1.jpg'
};
var fotos = new Fotos(data);
console.log(solicitud.files);
cloudinary.uploader.upload(
solicitud.files.photo_image.path, function(result) {
fotos.save(function(error){
console.log('Datos de fotografía guardados satisfactoriamente:');
console.log(fotos);
respuesta.render('index');
});
});
}else{
respuesta.render('photos/new');
console.log('Contraseña incorrecta, por favor, intentelo nuevamente...');
}
});
检查来运行循环。有谁知道我怎么能这样呢?
答案 0 :(得分:1)
简单:
$cnt = 0; Get-ChildItem *_*.bak | Rename-Item -NewName {
($_.BaseName -replace '_.*', '_') + $script:cnt++ + $_.Extension
} -WhatIf
如果您只想(重新)对具有重复数据库名称的文件进行编号,那么您无法真正对该文件进行单行处理。你需要这样的东西:
Get-ChildItem *_*.bak | ForEach-Object {
$basename = $_.BaseName -replace '_.*'
$newname = $basename + $_.Extension
$script:cnt = 1
while (Test-Path $newname) {
$newname = $basename + '_' + $script:cnt++ + $_.Extension
}
Rename-Item -NewName $newname -WhatIf
}
但是,在PowerShell中,您可以使用换行符和分号分隔语句,因此您仍然可以将上述所有内容合并为一行。像这样:
Get-ChildItem *_*.bak | ForEach-Object {$basename = $_.BaseName -replace '_.*'; $newname = $basename + $_.Extension; $script:cnt = 1; while (Test-Path $newname) {$newname = $basename + '_' + $script:cnt++ + $_.Extension}; Rename-Item -NewName $newname -WhatIf}
我通常不建议这样做,因为它会使代码难以阅读和调试。
无论哪种方式,在验证重命名后,取出鸡肉开关都可以正常工作。