自用Windows常用脚本分享

杂七杂八

在浏览佬友问题时有感,发现积累了几个常用的脚本,望各位如有好用的,也不吝分享出来

Windows有着“强大”的命令行,我们可以通过CMD、PowerShell等工具运行编写的脚本来达到莫些目的,本人初学,故脚本会有纰漏,望佬友能够赐教

本人脚本使用方式:维护一套脚本库,在环境变量中的Path配置脚本库路径,重装电脑时与其他文件一同备份即可

环境变量名称 环境变量值
PATH D:\Portable_Program_Files\00_bat [1]

配置好环境变量后即可在命令窗口中直接键入文件名来使用脚本

以下为脚本介绍

找到WIFI密码

电脑会链接过一些WiFi,但是我们手机想连的时候可能会忘记,那么可以使用以下脚本来找到WiFi密码

效果如图:
image

脚本自取:

@echo off
mode con: cols=40 lines=15
title WiFi密码查询
echo 正在查询结果
setlocal enabledelayedexpansion
for /f "tokens=2* delims=:" %%i in ('netsh wlan show profiles') do (
    set str=%%i
    for /f "tokens=3* delims= " %%d in ('netsh wlan show profiles key^=clear name^="!str:~1!"^| findstr "关键内容"') do (
        echo "!str:~1!"密码为:【%%d】
        echo "!str:~1!"密码为:【%%d】>>WiFi.txt
    )
)
echo 保存在脚本所在目录的WiFi.txt文件中
echo 任意键退出查询
pause>nul

找到端口占用情况

开发、启动软件中常会遇到端口占用问题,此脚本有助于定位到端口占用的程序

效果如图:

脚本自取:

@echo off & setlocal EnableDelayedExpansion
CHCP 65001
CLS
@echo ------------------------------------------------
echo 请输入需要查找的端口号
@echo ------------------------------------------------
set /p port=我想找:
@echo ------------------------------------------------
echo 找到的进程记录
echo =================================================================================
netstat -nao|findstr !port!
echo =================================================================================
echo 回车进行逐个确认
pause
for /f "tokens=2,5" %%i in ('netstat -nao^|findstr :%%port%%') do (
	::if "!processed[%%j]!" == "" (
	if not defined processed[%%j] (
		set pname=N/A
		for /f "tokens=1" %%p in ('tasklist^|findstr %%j') do (set pname=%%p)
		echo,
		echo %%i	%%j	!pname!
		echo,
		echo 输入 Y 确认Kill,否则跳过,可回车跳过
		set flag=N/A
		set /p flag=
		if "!flag!" == "Y" (
			taskkill /pid %%j -t -f
		) else (
			echo 已跳过
		)
		set processed[%%j]=1
	)
)
echo 程序结束
pause

切换JAVA版本

本人常在JAVA大版本切换,1.8、11、17、21等,其他开发语言如果有此需求也可以参照,取环境变量名字的时候不要大于PATH,否则PATH中引用无法正常识别,如PYTHON_HOME应该取成A_PYTHON_HOME

使用方式:
首先建立JAVA版本对应的环境变量
JAVA_HOME_8JAVA_HOME_11JAVA_HOME_17

环境变量名称 环境变量值
JAVA_HOME_8 C:\Program Files\Java\jdk-8
JAVA_HOME_11 C:\Program Files\Java\jdk-11
JAVA_HOME_17 C:\Program Files\Java\jdk-17

然后建立JAVA_HOME使用%JAVA_HOME_8%定义

环境变量名称 环境变量值
JAVA_HOME %JAVA_HOME_8%

最后在PATH使用%JAVA_HOME%

环境变量名称 环境变量值
PATH %JAVA_HOME%\bin
PATH %JAVA_HOME%\jre\bin

效果如图
image

脚本自取
经过测试,内容包含脚本就会报错403,请移步下面复制


  1. Portable_Program_Files是我定义的绿色、免安装、需备份拷贝的文件夹,内含:00_bat、01_安装包、02_crack ↩︎

51 个赞

挺不错的 对于wifi密码 查看, 我一般都是用命令 手敲

for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | for /f "tokens=*" %s in ("%j") do @echo %s | netsh wlan show profiles "%s" key=clear
1 个赞

有没有, 检测u盘被什么进程占用,然后自动kill占用进程的,有时候u盘总是弹不出来

这个习惯性用火绒的解除占用了,图形化界面好用

2 个赞

感谢分享

1 个赞

感谢分享,拿走了哈

1 个赞

当需要检测和解决U盘被占用无法弹出的问题时,可以使用一些命令行工具来帮助识别并关闭占用U盘的进程。以下是一个基本的Windows自动化脚本示例,使用了 handle.exe 工具来查找并关闭相关进程。

Windows 自动化脚本示例

  1. 安装 Handle 工具

    Handle 是一个由 Sysinternals 提供的免费工具,用于查找和关闭文件和目录句柄。首先,确保你已经下载并解压 Handle 工具到一个合适的位置,比如 C:\Tools\handle.

    下载地址:Handle工具下载

  2. 编写自动化脚本

    创建一个批处理脚本(比如 eject_usb.bat),其中包含以下内容:

    @echo off
    setlocal enabledelayedexpansion
    
    REM 替换为你的 U 盘驱动器号,比如 F:
    set "drive=F:"
    
    REM 查找占用 U 盘的进程
    cd /d "C:\Tools\handle"
    handle.exe %drive% | find /i "%drive%" > "%temp%\handle_output.txt"
    
    REM 提取进程 ID
    for /f "tokens=3" %%a in ('type "%temp%\handle_output.txt" ^| findstr /r "[0-9a-fA-F]*:"') do (
        set "pid=%%a"
        REM 杀死进程
        taskkill /PID !pid! /F > nul
    )
    
    del "%temp%\handle_output.txt"
    echo U 盘 %drive% 应该现在可以安全移除了。
    pause
    

    说明:

    • drive 变量替换为你的 U 盘驱动器号,比如 F:
    • 脚本首先使用 handle.exe 查找所有占用 U 盘的句柄,并将结果保存到临时文件中。
    • 然后,它提取每个进程的 PID,并使用 taskkill 命令强制关闭这些进程。
    • 最后,提示用户 U 盘应该可以安全移除,并等待用户按任意键继续。
  3. 运行脚本

    双击运行 eject_usb.bat 脚本,它会尝试关闭占用 U 盘的进程。如果一切顺利,脚本将提示你可以安全移除 U 盘了。

注意事项

  • 权限问题: 确保你以管理员权限运行这个脚本,因为 handle.exetaskkill 命令需要管理员权限来执行。
  • 自动化考虑: 脚本中的 taskkill /PID !pid! /F 命令是强制关闭进程,确保你理解这可能造成数据丢失或其他问题,尽量在没有打开重要文件的情况下使用。

参考链接

这个脚本可以作为一个起点,你可以根据实际需要进行调整和扩展。

4 个赞

佬们都挺会整活儿,我都是有问题现Google

2 个赞

谢谢大佬

2 个赞

它好像有个资源监视器进行查询,专用找文件被哪个进程占用,你gpt问

2 个赞

windows脚本可以把功能放网上,然后本机用curl下载到临时文件中执行,用call xxx。bat,结合实现个用数字选择功能,基本上很方便,win低版本无curl下载个就好,
或是用busybox.exe for win,然后bash 直接远程curl返回内容
能玩出花来

谢谢分享,windows的脚步很少写,到我要写的时候基本就没办法写 :rofl:

2 个赞

感谢分享,确实方便

第一个收了,时间长wifi密码就忘了

1 个赞

wifi密码那个脚本咋样啊,我直接使用bat,提示不是内部或外部命令

感谢

我都是找软件,结果装了一堆

必须mark

我也是,你解决了吗。我是退出查询那行提示这个问题,把这行删除后,报错是不报错了,但没东西出来 :sweat_smile:

mark