首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell将值转换为类型"System32 error

Powershell将值转换为类型"System32 error
EN

Stack Overflow用户
提问于 2014-11-24 07:44:12
回答 1查看 6.2K关注 0票数 0

我在Powershell中编写了一个脚本来收集有关我的归档文件夹中有多少文件的信息,该脚本将对文件夹中的文件进行计数,然后删除早于给定日期的文件,然后再次对文件数量进行计数,以报告它删除了多少文件。

我可以让它工作,但是我遇到了语法上的小问题。当我有这样的它时,它工作得很好。

代码语言:javascript
复制
Clear-Host

$ErrorFiles = "c:\data\ErrorFiles"
$Archivefiles = "c:\data\Archivefiles"

$PreCountErrorFiles = ((Get-ChildItem $ErrorFiles | Measure-Object).Count)
$PreCountArchivefiles = ((Get-ChildItem $Archivefiles | Measure-Object ).Count)

Get-ChildItem $ErrorFiles  | Where  {$_.LastWriteTime –lt ((Get-Date).AddDays(-10) )}  | ForEach { Remove-Item $_.FullName }
Get-ChildItem $Archivefiles | Where  {$_.LastWriteTime –lt ((Get-Date).AddDays(-10) )}  | ForEach { Remove-Item $_.FullName }

$PostCountErrorFiles = ((Get-ChildItem $ErrorFiles | Measure-Object).Count)
$PostCountArchivefiles  = ((Get-ChildItem $Archivefiles | Measure-Object ).Count)


$str1 = "Number of files in " + $ErrorFiles.ToString() + " was " + $PreCountErrorFiles.ToString() + " number of files deleted " + ($PreCountErrorFiles - $PostCountErrorFiles).ToString() + " and "  + $PostCountErrorFiles.ToString() + " are left." + "`n"  
$str2 = "Number of files in " + $Archivefiles.ToString() + " was " + $PreCountArchivefiles.ToString() + " number of files deleted " + ($PreCountArchivefiles - $PostCountArchivefiles).ToString() + " and "          + $PostCountArchivefiles.ToString() + " are left." + "`n"

write-host $str1
write-host $str2

但是,如果我尝试更改#str1赋值,使其在一行中,并获取两个字符串,我会得到这个错误(参见下面的代码)

无法将值"Number of files in“转换为"System.Int32”类型。错误:“输入字符串的格式不正确。”第13行: char:1 + $str1 = "Number of files in“+ $ErrorFiles.ToString() +”in“+ $PreCountErro ... ++ CategoryInfo : InvalidArgument:(:) [],RuntimeException + FullyQualifiedErrorId : InvalidCastFromStringToInteger

代码语言:javascript
复制
Clear-Host

$ErrorFiles = "c:\data\ErrorFiles"
$Archivefiles = "c:\data\Archivefiles"

$PreCountErrorFiles = ((Get-ChildItem $ErrorFiles | Measure-Object).Count)
$PreCountArchivefiles = ((Get-ChildItem $Archivefiles | Measure-Object ).Count)

Get-ChildItem $ErrorFiles  | Where  {$_.LastWriteTime –lt ((Get-Date).AddDays(-10) )}  | ForEach     { Remove-Item $_.FullName }
Get-ChildItem $Archivefiles | Where  {$_.LastWriteTime –lt ((Get-Date).AddDays(-10) )}  | ForEach     { Remove-Item $_.FullName }

$PostCountErrorFiles = ((Get-ChildItem $ErrorFiles | Measure-Object).Count)
$PostCountArchivefiles  = ((Get-ChildItem $Archivefiles | Measure-Object ).Count)


$str1 = "Number of files in " + $ErrorFiles.ToString() + " was " + $PreCountErrorFiles.ToString()     + " number of files deleted " + ($PreCountErrorFiles - $PostCountErrorFiles).ToString() + " and "  +     $PostCountErrorFiles.ToString() + " are left." + "`n"  +
- "Number of files in " + $Archivefiles.ToString() + " was " + $PreCountArchivefiles.ToString() + "     number of files deleted " + ($PreCountArchivefiles - $PostCountArchivefiles).ToString() + " and "  +     $PostCountArchivefiles.ToString() + " are left." + "`n"

write-host $str1

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-11-24 08:03:09

删除第二行开头的连字符:

代码语言:javascript
复制
$str1 = "Number of files in " + $ErrorFiles.ToString() + " was " + $PreCountErrorFiles.ToString()     + " number of files deleted " + ($PreCountErrorFiles - $PostCountErrorFiles).ToString() + " and "  +     $PostCountErrorFiles.ToString() + " are left." + "`n"  +
- "Number of files in " + $Archivefiles.ToString() + " was " + $PreCountArchivefiles.ToString() + "     number of files deleted " + ($PreCountArchivefiles - $PostCountArchivefiles).ToString() + " and "  +     $PostCountArchivefiles.ToString() + " are left." + "`n"
^

一般而言,格式运算符(-f)是构建如下字符串的更好方法:

代码语言:javascript
复制
$str1 = "Number of files in {0} was {1} number of files deleted {2} and {3} " +
        "are left.`nNumber of files in {4} was {5} number of files deleted " +
        "{6} and {7} are left.`n"
$str1 -f $ErrorFiles, $PreCountErrorFiles,
         ($PreCountErrorFiles - $PostCountErrorFiles),
         $PostCountErrorFiles, $Archivefiles, $PreCountArchivefiles,
         ($PreCountArchivefiles - $PostCountArchivefiles),
         $PostCountArchivefiles
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27095829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档