每天我都必须在 txt 文件中重命名 6 个文件 todaydate.94E 和 todaydate.94N,然后必须合并每个文件。
例如:
26/02/2020.94E
26/02/2020 (1).94E
26/02/2020 (2).94E
26/02/2020.94N
26/02/2020 (1).94N
26/02/2020 (2).94N
因此,我创建了这个批次来重命名它们,然后合并它们。
if exist *.94* (
ren *.94* *.txt
)
if not exist all.txt (
copy *.txt all.txt
) else (
del all.txt
copy *.txt all.txt
)
除了名称 .94E 和 .94N 之间存在冲突外,它工作正常
存在重复的文件名,或者找不到该文件。
即使我这样做:
if exist *.94E (
ren *.94E *.txt
)
if exist *.94N (
ren *.94N *.txt
)
我看到了这个话题但我不知道为什么这些代码对我都不起作用。请注意,系统是 Windows 10,我不是用户管理员。
你知道为什么吗 ?
答案1
该命令ren *.94* *.txt
将尝试重命名所有匹配的文件并将其扩展名更改为.txt
。
因此首先发生的是将其16022020.94e
重命名为16022020.txt
。
然后,尝试将16022020.94n
其重命名16022020.txt
,但该文件已存在,因此操作失败。
第二段代码(之后即使我这样做) 也会以同样的方式失败。
.txt
由于文件名冲突,无法将所有文件重命名为,但您能只需使用 即可合并这些文件copy *.94? all.txt
。
顺便说一句,我假设你给了我们虚构的文件名(Windows 上的文件名不能包含字符/
);如果它们是真实的,你可能会遇到其他问题。
答案2
在 PowerShell 中,你可以使用:
gci -FIle | Rename-Item -NewName {$_.BaseName + $_.Extension.Substring(1) + '.txt' }
Directory: C:\Users\keith\Sandbox\bat file
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (1).94E
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (1).94N
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (2).94E
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (2).94N
-a---- 2/26/2020 1:49 PM 0 26-02-2020.94E
-a---- 2/26/2020 1:49 PM 0 26-02-2020.94N
PS C:\...\bat file>gci -FIle | Rename-Item -NewName {$_.BaseName + $_.Extension.Substring(1) + '.txt' } PS C:\...\bat file>gci
Directory: C:\Users\keith\Sandbox\bat file
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (1)94E.txt
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (1)94N.txt
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (2)94E.txt
-a---- 2/26/2020 1:49 PM 0 26-02-2020 (2)94N.txt
-a---- 2/26/2020 1:49 PM 0 26-02-202094E.txt
-a---- 2/26/2020 1:49 PM 0 26-02-202094N.txt
并实现合并自动化。