如何使用 PowerShell 递归调用 Java 程序批量处理文件路径

秋萱姑娘_8137

秋萱姑娘_8137

2026-01-12

989人浏览

原创

如何使用 PowerShell 递归调用 Java 程序批量处理文件路径

本文介绍如何在 powershell 中递归遍历目录下的所有文件,并为每个文件执行一次 java 程序,将文件的完整路径作为参数传入,适用于批量重命名、内容处理等场景。

在自动化文件处理任务中,常需将外部程序(如 Java 编写的工具)与 PowerShell 的强大文件系统遍历能力结合。你已编写好一个 Java 主类 org.example.Main,它接收单个文件路径作为命令行参数并执行操作(例如删除文件名中第2个字符)。现在目标是:对指定目录(含子目录)下所有文件,逐一调用该 Java 程序,并准确传递其绝对路径。

关键在于理解 PowerShell 管道(Pipeline)与外部命令交互的机制。你最初尝试的语句:

Get-ChildItem -Recurse | java -cp "..." org.example.Main $_.name

存在两个核心问题:

  1. $_ 是管道自动变量,只能在脚本块 { ... } 内部使用,不能直接出现在管道右侧的命令参数中;
  2. .Name 仅返回文件名(如 report.txt),缺少路径信息,Java 程序无法定位文件;应使用 .FullName 获取完整路径(如 C:\Data\Sub\report.txt)。

✅ 正确做法是使用 ForEach-Object cmdlet 对每个 FileInfo 对象进行独立处理:

Java注释规范Skills
Java注释规范Skills

当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。

下载
Get-ChildItem -File -Recurse | ForEach-Object {
    java -cp "C:\Users\Media PC\Documents\Renamer\src\main\java" org.example.Main $_.FullName
}

? 说明与最佳实践:

  • -File 参数确保只遍历文件(排除文件夹),避免向 Java 程序传入目录路径导致异常;
  • $_ 在 { ... } 内有效,$_.FullName 提供跨平台兼容的绝对路径(Windows PowerShell 与 PowerShell 7+ 均可靠);
  • 若需限定起始目录(非当前目录),可添加 -Path 参数,例如:
    Get-ChildItem -Path "C:\MyProject\Copy" -File -Recurse | ...
  • 性能提示:每次启动 JVM 开销较大。若 Java 程序支持批量路径(如 java ... Main file1.txt file2.txt),应重构 Java 端以提升效率;当前方案适合逻辑简单、文件量不大的场景。

⚠️ 注意事项:

  • 确保 Java 类路径(-cp)指向编译后的 .class 文件所在目录(而非源码 .java),例如应为 target/classes/ 或 bin/,而非 src/main/java;
  • 路径含空格(如 Media PC)无需额外转义,PowerShell 会自动处理;
  • 建议先用 Write-Host $_.FullName 替代 java ... 进行路径调试,确认遍历结果符合预期。

通过此方法,你即可安全、准确地将每个文件的完整路径注入 Java 程序,实现真正的递归批量处理。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java windows

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

2025.12.04

798

13

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

4236

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

306

9

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3339

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2898

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1528

3

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2639

5

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.08

3330

4

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

1677

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习