我有一个非常好用的脚本,但是,有些用户有一些同名的.pst,我不想覆盖它,我需要的是,如何在进程中或之前重命名文件。经过这个过程。谢谢
package system
config system 'system'
option hostname 'test-system'
package network
config interface 'lan'
option ifname 'eth0'
option proto 'none'
package another_package
config etc 'etc'
option name 'val'
答案 0 :(得分:1)
您需要采取预防措施:
以下批次在括号(1)中添加类似数字的资源管理器
测试了不同的文件夹和扩展名。
如果文件名已经存在,则递归调用子:CopyInc
,递增直到新名称空闲。
@echo off
taskkill /IM outlook.exe
Set "Dest=c:\FronMig\pst"
Set "Base=C:\*.pst"
Mkdir "%Dest%" 2>NUL
For /f "delims=" %%P in (
'dir /b/s/a-d "%Base%" ^|Findstr /IBLV /C:"%Dest%" '
) Do (echo %%P
Set "Cnt=0"
Set "Name="
For /f "tokens=1,2 delims=()" %%B in ("%%~nP") Do Set Cnt=%%C&Set "Name=%%B"
rem >> "c:\FronMig\pathdata.txt" Echo:%%~fP
Call :CopyInc "%%P" "%Dest%\%%~nxP"
)
start outlook.exe
pause
Goto :Eof
:CopyInc
If not exist %2 (
Copy %1 %2 &&Echo Copied %1 %2
Goto :Eof
) else (
Echo Already present: %2
)
Set /A Cnt+=1
If not defined Name Set "Name=%~n2 "
Set "NewName=%~dp2%Name%(%Cnt%)%~x2"
Echo Try: copy %1 "%NewName%"
Call :CopyInc "%NewName%"
答案 1 :(得分:0)
这将检查文件config.txt是否退出,如果它将文件复制到另一个文件夹并同时重命名它。
IF EXIST "C:\Test\config.txt"(copy /y C:\temp\config.pst C:\Somepath\config_copied.txt)