ソート順調整(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. 是输出一个空行。