• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
langQ
博客园    首页    新随笔    联系   管理    订阅  订阅
ソート順調整(power shell版)

ソート順調整(power shell版)

简易版
处理指定的单个文件。

单个文件或文件数量不多的时候,可以不用bat处理,
使用sakura进行sort一下就行。

@echo off
chcp 65001

rem 対象ファイル
set targetFile=D:\Workstation\BAT\常用\sample.txt

rem PowerShellのコマンドレットを組み立て(昇順でソート)
set psCommand="(Get-Content %targetFile%) | Sort-Object | Out-File -Encoding default %targetFile%"

rem PowerShellのコマンドレットを組み立て(降順でソート)
rem set psCommand="(Get-Content %targetFile%) | Sort-Object -Descending | Out-File -Encoding default %targetFile%"


rem PowerShellのコマンドレットを実行
powershell -NoProfile -ExecutionPolicy Unrestricted %psCommand%

rem 実行結果を確認
if %errorlevel%==0 (
  echo 正常終了しました。戻り値:%errorlevel%
) else (
  echo 異常終了しました。戻り値:%errorlevel%
)

echo.

pause
exit

 
 

处理多文件版

把处理文件夹拖拽到bat文件上,bat就被启动了。
此时,目标文件夹作为bat的第一个param。

把目标文件夹拷贝一份,同级目录下做成的新目录后面带有“_sort_时分秒”的后缀。
这样多次执行,不会出现文件覆盖提醒的问题。

@echo off
chcp 65001
setlocal enabledelayedexpansion

rem 対象ファイル
rem set targetFile=D:\Workstation\BAT\常用\sample.txt

rem PowerShellのコマンドレットを組み立て(昇順でソート)
rem set psCommand="(Get-Content %targetFile%) | Sort-Object | Out-File -Encoding default %targetFile%"

rem PowerShellのコマンドレットを組み立て(降順でソート)
rem set psCommand="(Get-Content %targetFile%) | Sort-Object -Descending | Out-File -Encoding default %targetFile%"


set time1=%time: =0%
set time2=%time1:~0,2%%time1:~3,2%%time1:~6,2%
set ymd=%date:~0,4%%date:~5,2%%date:~8,2%_%time2%
echo %ymd%


if not exist %1_sort_%ymd% (
  mkdir %1_sort_%ymd%
)

rem PowerShellのコマンドレットを実行
rem powershell -NoProfile -ExecutionPolicy Unrestricted %psCommand%

rem copy C:\before_folder\test.txt C:\after_folder\test_%str_date%.txt
rem copy %1 %1_sort

rem set str_date=%date:~0,4%%date:~5,2%%date:~8,2%
rem xcopy /E C:\test\test_folder\ C:\test\test_folder_%str_date%\
xcopy /E %1 %1_sort_%ymd%

rem echo %time%
rem ping -n 3 127.0.0.1 > nul 2>&1
rem echo %time%

for /r "%1_sort_%ymd%" %%f in (*.*) do (
  echo %%f
  set psCommand="(Get-Content %%f) | Sort-Object | Out-File -Encoding default %%f"
  rem PowerShellのコマンドレットを実行
  powershell -NoProfile -ExecutionPolicy Unrestricted !psCommand!
)

rem 実行結果を確認
if %errorlevel%==0 (
  echo 正常終了しました。戻り値:%errorlevel%
) else (
  echo 異常終了しました。戻り値:%errorlevel%
)
echo.

pause
exit

注意:echo. 是输出一个空行。

posted on 2024-01-27 19:29  嚯嚯go  阅读(36)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3