❶ 如何用批處理刪除csv文件內的回車呢
powershell-c"[IO.File]::ReadAllText('231.csv',[Text.Encoding]::Default)-replace' +',"`r"|out-file'New_231.csv'-encodingDefault"&pause
無誤及時採納回答
❷ windows powershell 中輸出一個
Where-Object可以用於條件的過濾,Foreach-Object可以用於循環,Select-Object可以用於屬性的選擇,Format-List可以用於對最終輸出的格式化,目前就想到這么多了,你可以執行以下命令來看看他們的不同dirdir | Where-Object{$_.Length -gt 1}dir | Foreach-Object{$_.Length}dir | Select-Object Name,Lengthdir | Select-Object Name,Length | format-listdir | Select-Object Name,Length | format-table
❸ windows powershell的中主要用處和其與DOS的區別
腳本語言源自早期文字模式的命令列計算機系統,在當時只能以鍵盤敲入命令才能操作計算機的情況下,為了減少某些需要不斷重復敲入命令的情況,計算機操作系統的命令處理器(在 UNIX 的世界這通常稱為 command shell)提供了「批次操作」(batch operation)的方式,讓計算機操作者可以將一整個流程的命令,循序、逐行的編排在稱為「批處理」(batch file,也稱為 batch jobs 或 shell scripts)的文字文件,若有相同的操作需要處理,即可載入批次檔而不需再次重復敲入指令。
Windows PowerShell 的管線功能
DOS 或 UNIX shell 都能利用「管線符號」(pipeline symbol),將指令的執行結果移轉到另一個指令,讓另一個指令處理前一個指令轉來的數據。Windows PowerShell 的管線符號也是 |,例如之前用過的 get-help * | more,就是將 get-help * 的結果轉給 more,而 more 會讓結果顯示滿整個窗口就暫停。
管線是各種 shell 環境的「黏合」最佳例證,例如管線就黏合了 Windows PowerShell 的各個指令,進而讓各個指令完成一件工作。再舉幾個管線的例子。首先是:
ipconfig | findstr "Address"
被管線黏合的 ipconfig 和 findstr 都是 Win32 既有的外部指令,前者會顯示、設定計算機的 IP 地址,後者則能以各種方式找出特定字元串。以上的敘述是將 ipconfig 的執行結果轉給 findstr,並讓 findstr 找出執行結果的 Address 字元串。
再舉兩個例子。以下的敘述會列出已停止的系統服務,但是由 get-service 和 where-object 相互協力完成,前者列出所有的系統服務,後者過濾出狀態為 Stopped 的系統服務:
get-service | where-object {$_.Status -eq "Stopped"}
但以上敘述的結果會以系統服務的名稱作為排列方式,若想以系統服務的「顯示名稱」依序排列,可以再加上 sort-object,並也以管線黏合:
get-service | where-object {$_.Status -eq "Stopped"} | sort-object -property DisplayName
兩者的區別是DOS只在開機時進行,而windows powershell 必須在windows系統下進行,但比較方便.
❹ 如何使用powershell刪除CSV文件中的某一行
寫了一個小小的實例,你可以根據這個方法試試看:
$first2process = get-process | Select-Object -First 2 | Select-Object ProcessName,Handles
# Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
# ------- ------ ----- ----- ----- ------ -- -----------
# 74 8 1408 1136 43 1696 armsvc
# 139 10 2420 840 76 1324 atieclxx
$first2process | ConvertTo-Csv | Out-File $home\test.csv # 生成示例test.csv
$csvFile1 = Import-Csv $home\test.csv
# 通過條件過濾後重寫test.csv覆蓋掉原來的文件,得到需要的新文件
$csvFile1 | Where-Object {$_.Handles -ne "74"} | Export-Csv $home\test.csv
$csvFile2 = Import-Csv $home\test.csv
# 輸出前後結果對比
$csvFile1
Write-Host"============================================="
$csvFile2
❺ 如何控制Windows PowerShell命令輸出
Where-Object可以用於條件的過濾,Foreach-Object可以用於循環,Select-Object可以用於屬性的選擇,Format-List可以用於對最終輸出的格式化,目前就想到這么多了,你可以執行以下命令來看看他們的不同
dir
dir | Where-Object{$_.Length -gt 1}
dir | Foreach-Object{$_.Length}
dir | Select-Object Name,Length
dir | Select-Object Name,Length | format-list
dir | Select-Object Name,Length | format-table
❻ 多個文本文件批量刪除空行
不清楚你的實際文件,僅以問題中的說明為據
復制粘貼到記事本,另存為xx.bat,編碼選ANSI,跟要處理的文件放一起運行
@echooff
rem刪除多個txt文件里的所有空行
set#=Anyquestion&set@=WX/&set$=Q&set/az=0x53b7e0b4
title%#%+%@%%$%%$%%z%
cd/d"%~dp0"
set"folder=#result"
ifnotexist"%folder%"md"%folder%"
powershell-NoProfile-ExecutionPolicybypass^
dir^|?{('.txt'-eq$_.Extension)-and($_-is[System.IO.FileInfo])}^|%%{^
write-host$_.Name;^
$text=[IO.File]::ReadAllText($_.FullName,[Text.Encoding]::Default)-replace'[ ]+',"`r`n";^
[IO.File]::WriteAllText('%folder%'+$_.Name,$text,[Text.Encoding]::Default);^
};
echo;%#%+%@%%$%%$%%z%
pause
❼ 在powershell中怎麼去除一個txt裡面的空格和空行
foreach ($i in Get-Content Groupname.txt)
{
if($i){Get-ADGroupMember "$i" -Recursive | select SamAccountName >M:\$i.txt}
}
這樣就應該沒有空行了。
至於空格 $i=$i.Trim()
這樣就去掉了。
❽ 如何用 PowerShell 分割文本文件,以空行分割幾個空行算一個。
ps | select * >pslist.txt
$pslist=gc pslist.txt
#按空格分隔文件
$pslist|%{$i=1}{
if($_){$_ >>"ps$i`.txt"}else{$i++}
}
#按內容和id修改文件名(因為有重名的所以加了id)
dir |?{$_.name -match 'ps\d+\.txt'}|%{
$newname=((gc $_)[1].split(":")[1]).Trim()
$id=((gc $_)[14].split(":")[1]).Trim()
Rename-Item $_ ($newname + $id+ ".txt")
}
❾ 我能用Windows PowerShell做什麼:過濾返回的數據
註:本篇文章,未在聯系作者以及得到許可的情況下, 禁止以任何形式進行轉載。By:Anders Mail:[email protected] 過濾返回的數據Where-Object cmdlet提供了一種方法,用其他cmdlets為你過濾數據。舉例來說,默認情況下Get-Process cmdlet一般會返回有運行在你計算機上所有的進程信息。不過,假設你只對那些進程使用超過200個句柄的進程有興趣。 (我們不知道為什麼,你對它們有興趣,但… …)。使用Ger-Process只有得到子進程,那麼由Where-Obejct完全輸送結果:Get-Process | Where-Object {$_.handles -gt 200}仔細注意這個語法。首先, where子句是密封在括弧里的;此外,$_.notation是用來來代表默認對象(也就是說,對象被開始被轉到各管道線)。最後,但肯定不是最小,注意比較運算符來指明大小:如 -gt 大於 「>」。Windows PowerShell不使用標准算術的比較運算符;相反,它使用諸如這些操作符:�6�1-lt -- 小於�6�1-le -- 小於或等於�6�1-gt -- 大於�6�1-ge -- 大於或等於�6�1-eq -- 等於�6�1-ne -- 不等於�6�1-like –類似(用於文本的通配符比較)換言之,如果我們正在尋找的進程句柄均大於或等於200,那麼我們使用這個命令:Get-Process | Where-Object {$_.handles –ge 200}您也可以使用 -and 和 - or參數,以創造更多的有限目標資料庫。舉例來說,假設你想返回所有實例的svchost使用超過200多句柄的進程。你必須要做的是使用 -and 標準的分開這兩者分句:Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}同樣,假設你想列出所有使用超過200以上的句柄數的svhost進程(換言之,所有使用超過200以上的句柄數的svhost進程,不管有多少)。在這種情況下,使用 -or 參數加入在兩個部分之中:Get-Process | Where-Object {$_.handles -gt 200 -or $_.name -eq "svchost"}這里的另一個例子;這個(使用Get-ChildItem cmdlet )只顯示,C:/Scripts文件夾中大於100000位元組的文件:Get-ChildItem c:/scripts | Where-Object {$_.length -gt 100000}並且我們不要忘記 - like操作符。這個命令返回所有包含在C:/Scripts里的文件,其中包括文件名為test的字元。注意利用兩個星號作為通配符字元:Get-ChildItem c:scripts | Where-Object {$_.name -like "*test*"}你可以熟練的取回這個數據類型:Mode LastWriteTime Length Name
---- ------------- ------ -----a--- 5/6/2006 10:24 PM 34198 test.csv
-a--- 5/19/2006 9:11 AM 5918 test.htm
-a--- 5/19/2006 8:16 AM 34226 test.log
-a--- 5/19/2006 1:20 PM 65 test.ps1
-a--- 5/20/2006 9:52 AM 150 test.psc1
-a--- 5/20/2006 9:52 AM 150 test.psc1e.psc1
-a--- 5/19/2006 1:27 PM 565 test.txt
-a--- 4/17/2006 6:41 PM 24064 test.txt.doc
-a--- 5/19/2006 1:45 PM 1971 test.vbs
❿ 如何通過powershell獲取win7域用戶的安全日誌,過濾出域用戶名、機器、時間、信息
$c=New-PSSession "192.168.14.99" -Credential "administrator"
$log=icm $c {get-eventlog -log Security -After "2013-3-12"}
$log|select TimeWritten,@{N="client";E={($_.Message.split("`n")|Select-String "工作站名:").ToString().split()[2].trim()}},
@{N="ip";E={($_.Message.split("`n")|Select-String "源網路地址:").ToString().split()[2].trim()}}|
?{$_.client}
這里有個例子 不知道能否幫到你。
get-eventlog -log Security -After "2013-3-12" #是提取日誌
下面是提取信息和時間