|
本帖最后由 bluesky_0 于 2022-5-21 22:32 编辑
我最近做EXCEL VBA批量读取文件夹下的PDF文件处理.
发现有的文件名看着是空格,读到VBA就变成"?"
在论坛也没有找到答案,发现有人多年前提到这个问题,是间接解决的:帖子地址如下:
https://club.excelhome.net/thread-1492890-1-1.html
原因是看着文件名的空格实际不是空格,是ASCII码里面的不在32-127范围的特殊字符.
我想做一个批处理,快速把文件夹的文件名每一个特殊字符替换为其他可以识别的字符.
GOOGLE好久无法解决,今天,终于用powershell方法解决.
发现powershell 脚本真是好东西.一定学会这个办公自动化好东西.
解决方法如下:
(Get-ChildItem -Path 'D:\TEST'-File) |
Where-Object{ $_.Name -match'[^\x20-\x81]'} |
Rename-Item -NewName { $_.Name -replace '[^\x20-\x81]+', '_'}
解释:
第一行,取得文件夹地址
第二行,匹配不在ASCII code不在 32 - 129 范围的字符
第三行 替换ASCII code不在 32 - 129 范围的字符为 下划线 '_'
用法:
1.txt文件copy以上代码,替换 'D:\TEST' 为你的文件夹,一定带上''
2.保存为扩展名 ps1 文件
3.运行PS1 .右键:使用powershell运行.或者右键 编辑 测试运行,如下图:
4.注意文件名一定是键盘的字符,字母 数字组合,如果是带中文的,中文也会被替换为 "_"
ASCII code列表
|
评分
-
2
查看全部评分
-
|