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

如何在Windows中从含%2f/%2F的文件名创建目录并批量处理文件

解决Gist解压后URL编码文件名的目录整理方案

方案一:Batch脚本实现

适用于纯Batch环境,处理流程包含解码空格、拆分目录路径、创建目录并移动文件:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下所有含%2f/%2F的文件
for %%F in ("*%2f*" "*%2F*") do (
    :: 复制原文件名到变量
    set "oldname=%%~nxF"
    :: 解码%20为空格
    set "decoded=!oldname:%20= !"
    :: 拆分第一个%2f/%2F为目录和文件名(统一转小写处理)
    set "lower=!decoded:%2F=%2f!"
    for /f "delims=%2f tokens=1*" %%A in ("!lower!") do (
        set "dirpath=%%A"
        set "newname=%%B"
    )
    :: 如果拆分后有目录名和文件名
    if defined dirpath if defined newname (
        :: 创建目录(含子目录)
        md "!dirpath!" 2>nul
        :: 移动文件到目录并重命名
        move "%%F" "!dirpath!\!newname!" >nul
    )
)

endlocal
echo 处理完成
pause

使用说明:将脚本保存为fix_gist_files.bat,放到解压后的Gist文件目录中双击运行即可。

方案二:Batch调用PowerShell命令实现

PowerShell对URL解码和字符串处理更灵活,适合复杂路径场景:

单行Batch调用命令

powershell -Command "Get-ChildItem -File | Where-Object { $_.Name -match '%2f|%2F' } | ForEach-Object { $decoded = [System.Web.HttpUtility]::UrlDecode($_.Name); $split = $decoded -split '/', 2; if ($split.Count -eq 2) { $dir = $split[0]; $file = $split[1]; New-Item -ItemType Directory -Path $dir -Force | Out-Null; Move-Item -Path $_.FullName -Destination (Join-Path $dir $file) } }"

核心逻辑说明

  1. Get-ChildItem -File:获取当前目录下所有文件
  2. Where-Object { $_.Name -match '%2f|%2F' }:筛选出文件名含%2f或%2F的文件
  3. [System.Web.HttpUtility]::UrlDecode($_.Name):自动解码URL编码(%20转空格、%2F转/)
  4. -split '/', 2:按第一个/拆分出目标目录和文件名
  5. New-Item -Force:创建目标目录(已存在则不报错)
  6. Move-Item:将文件移动到对应目录并完成重命名

使用说明:将上述命令保存为.bat文件放到目标目录运行,或直接在命令提示符中执行。

内容的提问来源于stack exchange,提问作者Vicky Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:18:20