CMD 中添加使用效果如内置命令一样的别名命令:doskey
官方文档:doskey | Microsoft Learn
cmd_autoruns.cmd
@echo off
REM reg add "hkcu\software\microsoft\command processor" /v Autorun /t reg_sz /d C:\Users\Liang\OneDrive\Sysinternals\cmd_autoruns.cmd
REM 命令提示符属性--颜色--屏幕背景:1/36/86;提高 doskey 执行效率方法,不要直接用echo,要使用绝对路径;可以使用 echo %time% 查看执行耗时。
REM 先执行 reg add HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v FlightSettingsMaxPauseDays /t REG_DWORD /d 0xb6 /f
REM 再到[WIN11]设置--自动更新--暂停更新--选择26周,[WIN10]设置--自动更新--高级选项--暂停更新--选择具体日期。半年更新一次是可以接受的,0xb6=182天/7=26周,52周=0x16C。
REM %~dpnx0 d驱动器号 p路径 n文件名 x文件后缀名 0批处理文件自身/1~9参数1~9
REM doskey中特殊字符等效作用:$g=>,$g$g=>>,$L=<,$t=&,$1~$9=%1~%9,$*=%*
title cmd_autoruns
doskey cmd_autoruns=C:\Windows\System32\notepad.exe %~dpnx0
REM --- Test ---
rem doskey jmeter=C:\DevOps\JMeter\bin\jmeter.bat $* -j C:\DevOps\JMeter\bin\JMeter.log
rem doskey soapui=C:\DevOps\SoapUI\bin\soapui.bat $*
REM --- cmd_ssh --- 建议使用 PuTTY.exe
rem doskey aws=%~dp0Console\cmd_ssh.bat aws
rem doskey ali=%~dp0Console\cmd_ssh.bat ali
rem doskey aliscp=%~dp0Console\cmd_ssh.bat aliscp $*
REM --- cmd_collectio ---
set "keyList=linkd fordir unmsi hash ip myLink port po rm uefi 7zaTxt Qemu-img vm vmsetip"
for %%a in (%keyList%) do (doskey %%a=%~dp0Console\cmd_collection.bat %%a $*)
SETLOCAL ENABLEDELAYEDEXPANSION
REM --- %~dp0Console --- 系统中没有,才使用Console目录下命令
rem 1、在 For 里面,set var=value 后,%var%永远为空。需要 setlocal ENABLEDELAYEDEXPANSION 开启延缓环境变量,且以!var!代替;使用 ENDLOCAL 结束
rem 2、在 Where 后面,只能使用 %errorlevel% ;所以 where %%a 后,要使用 !ERRORLEVEL!。
set "keyList=7za.exe edit.exe nssm.exe sudo.exe"
for %%a in (%keyList%) do (
set sKey=%%a
rem 用于后续的 %sKey:~0,-4% 提取,或 %sKey:64=32% 替换。可使用 echo !sKey:~0,-4! 观察
where /Q %%a
if !errorlevel! NEQ 0 (doskey !sKey:~0,-4!=%~dp0Console\%%a $*)
)
REM --- Sysinternals ---
set "keyList=handle64.exe sdelete64.exe pskill64.exe pslist64.exe"
for %%a in (%keyList%) do (
set sKey=%%a
doskey !sKey:~0,-6!=%~dp0Console\%%a -nobanner $*
)
ENDLOCAL
REM --- LowFrequency ---
doskey lf=%~dp0Console\cmd_lowFrequency.bat $*
REM 下面的参数含义:acodec :指定音频编码器;vcodec:指定视频编码器,copy只拷贝,不做编码;vn:v代表视频,n代表no,无视频的意思;同理an
doskey tstomp4=%~dp0Console\cmd_lowFrequency.bat ffmpeg -i $1 -c copy -map 0:v -map 0:a $1.mp4
doskey mp4toacc=%~dp0Console\cmd_lowFrequency.bat ffmpeg -i $1 -vn -c:a copy $1.aac
doskey acctomp3=%~dp0Console\cmd_lowFrequency.bat ffmpeg -i $1 -acodec libmp3lame $1.mp3
REM --- doskey End ---
if /i "%cd%"=="C:\Windows\system32" cd /d "%userprofile%"
cmd_collection
@echo off
if /i "%1"=="linkd" echo "使用 mklink /?"
if /i "%1"=="fordir" echo "<forfiles /?>更强大,<for /r 1 %%a in (2) do 3>对1目录下的2文件,执行3命令。"
if /i "%1"=="unmsi" echo "msiexec /a <msi文件> /qb TARGETDIR=<绝对路径>"
if /i "%1"=="hash" echo "CertUtil -hashfile <文件> <MD5|SHA1/256/512>"
if /i "%1"=="ip" ipconfig /all | findstr "\<主机名 适配器\> \<物理地址 \<IPv4 \<默认网关 \<DNS"
if /i "%1"=="port" netstat -ano|findstr "%*"
if /i "%1"=="po" call :powerOff %*
if /i "%1"=="rm" call :rm %*
goto batEnd
:powerOff
:: %* 是包含%1的,比如 po 30,%1=po,%2=30
shutdown /a
set sec=0
:: %2没有或非数字,经过计算后,值为0
set /a sec=60*%2
if not "%sec%"=="0" shutdown /s /t %sec%
goto :eof
:rm
if /i "%2"=="" (
set ddir=%temp%
) else (
set ddir=%2
)
del /s /q /f %ddir%
dir %ddir% /ad /b /s | sort /r > %temp%\tmp_dir.pre
for /f %%a in (%temp%\tmp_dir.pre) do (rd /s /q "%%a")
goto :eof
:batEnd
cmd_lowFrequency
@echo off
if /i "%1"=="curl" goto checkOK
if /i "%1"=="ffmpeg" goto checkOK
if /i "%1"=="exiftool" goto checkOK
goto nonsupport
:checkOK
if exist D:\User\LowFrequency (
set lfDIR=D:\User\LowFrequency
) else (
set lfDIR=D:\LowFrequency
)
path | findstr %lfDIR%\%1 > nul
if ERRORLEVEL 1 path %path%;%lfDIR%\%1
::执行bat的传参
%*
goto end
:nonsupport
if /i not "%1"=="help" set tips=,不支持 %1 命令
echo lf 仅支持 curl,ffmpeg,exiftool%tips%。
echo a). ffmpeg可直接使用宏:tsToMp4/mp4ToAcc/accToMp3 {文件名}
echo b). 音频和视频(不包含音频)合并:ffmpeg -i video.mp4 -i audio.aac -c:v copy -c:a copy output.mp4
echo.
:end
发表回复