You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Paul Black的随机文件选择批处理脚本以避免选中自身

如何修改Paul Black的随机文件选择批处理脚本以避免选中自身

嘿,我完全懂你的烦恼——这个脚本偶尔会选中自己,导致播放中断,确实挺闹心的。别担心,只需要几个小改动就能解决问题,让它自动跳过自身的.bat文件。

咱们先看看核心问题:原脚本用for %%f in (*.*)遍历当前文件夹的所有文件,自然会把它自己也包含进去。所以我们只需要在循环里加个判断,把脚本自身排除在候选列表外就行。

下面是修改后的完整脚本,我标出来了关键改动:

@echo off

:: ##############################################################################

:: # Title:      Select a random filename in the current directory [ folder ].  #

:: # Created By: Paul Black at TenForums.com/members/paul-black.html            #

:: # Created:    October 2020.                                                  #

:: # Modified:   Exclude the batch script itself from selection                 #

:: ##############################################################################

title Select A Random Filename.

mode con: cols=80 lines=5 & color 17

setlocal EnableDelayedExpansion

:: 获取当前批处理脚本的完整文件名(包括扩展名)
set "currentScript=%~nx0"

set n=0

for %%f in (*.*) do (
    :: 判断当前文件是否是脚本自身,不是才加入候选列表
    if not "%%f"=="!currentScript!" (
        set /A n+=1
        set "file[!n!]=%%f"
    )
)

:: 容错处理:如果没有可选文件就提示用户
if !n! equ 0 (
    echo. & echo 没有可选择的有效文件!
    echo. & echo ^>Press ANY key to EXIT . . . & pause >nul & exit
)

set /A "RAND=(n*%Random%)/32768+1"
echo. & echo "!file[%RAND%]!"
echo. & echo ^>Press ANY key to EXIT . . . & pause >nul & exit

关键改动说明:

  • set "currentScript=%~nx0":这行命令用批处理的特殊变量%~nx0获取当前脚本的完整文件名(比如你的脚本叫random.bat,这行就会把currentScript设为这个值)。
  • 循环里的if not "%%f"=="!currentScript!":每次遍历文件时都会做检查,只有当文件不是脚本自身时,才会把它加入到候选文件列表里。
  • 新增的if !n! equ 0判断:如果当前文件夹里除了脚本没有其他文件,会直接提示用户,避免后续随机数计算出错导致异常。

这样修改后,脚本就再也不会选中自己啦,你可以放心用它来选音频文件播放~

备注:内容来源于stack exchange,提问作者typecrazy789

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:18:16