我正在用代码构建一个 rar 命令。我在数据库调用中获取共享和文件夹 (\\BUServer1\Share01$\IHDEV01),然后我得到了想要存档的子文件夹和扩展名的列表(平面文件*.dbf”)我将两者连接起来,如下面的命令所示。
我之所以指出这一点,是因为我是使用未知值即时构建的。我的问题是,当打开存档时,IHDEV01 文件夹位于存档顶部,其他所有内容都包含在其中(见下图)。我的要求是保持所有内容原样,但将 IHDEV01 从存档顶部移除。我尝试传递 -ep1 作为命令参数,这确实会删除 IHDEV01 文件夹,但它也会删除 IHDEV01 下面的文件夹结构。我考虑过将共享和文件夹映射到字母,但执行这些存档作业的过程可能会在不同的客户上被调用多次。有没有我没有看到的简单解决方案?
rar.exe a -r -ed -s -sfx "C:\Sigma\Applications\Development\ BackupService\1.0.4016\bin\Data\IHDEV01\IHDEV01_DatabaseFiles" -hpmypassword -v2048m "\\BUServer1\SHARE01$\IHDEV01\FLATFILES\*.dbf"
"\\BUServer1\SHARE01$\IHDEV01\FLATFILES\ASMAIL*.*"
"\\BUServer1\SHARE01$\IHDEV01\APPS\comm\*.*"
"\\BUServer1\SHARE01$\IHDEV01\APPS\Forms\*.*"
"\\BUServer1\SHARE01$\IHDEV01\APPS\Integ\*.*"
"\\BUServer1\SHARE01$\IHDEV01\APPS\PCX\*.*"
"\\BUServer1\SHARE01$\IHDEV01\APPS\Txt\*.ids"
"\\BUServer1\SHARE01$\IHDEV01\APPS\mvr\*.*"
"\\BUServer1\SHARE01$\IHDEV01\log\*.log"
"\\BUServer1\SHARE01$\IHDEV01\dat\*.*"
"\\BUServer1\SHARE01$\IHDEV01\wintam\winrpts\*.fxp"
"\\BUServer1\SHARE01$\IHDEV01\misc\winrpts\*.prg"
"\\BUServer1\SHARE01$\IHDEV01\as_flags\*.*"
"\\BUServer1\SHARE01$\IHDEV01\as_desk\*.*"
答案1
我建议使用开关-ep1
删除基本目录路径\\BUServer1\SHARE01$\IHDEV01\FLATFILES\
,并使用开关-apFLATFILES
将此目录路径添加到压缩到 SFX 档案文件中的每个文件中。
因此命令行是:
rar.exe a -apFLATFILES -ed -ep1 -hpmypassword -r -s -sfx -v2048m "C:\Sigma\Applications\Development\BackupService\1.0.4016\bin\Data\IHDEV01\IHDEV01_DatabaseFiles" "\\BUServer1\SHARE01$\IHDEV01\FLATFILES\*.dbf"
例子:
该目录\\BUServer1\SHARE01$\IHDEV01\FLATFILES
包含:
- 子目录 1
- 子文件夹 1
- 文件_1-1.dbf
- 子文件夹 2
- 文件_1_2.dbf
- 文件_1.dbf
- 子文件夹 1
- 子目录 2
- 文件_2.dbf
- 文件.dbf
C:\Sigma\Applications\Development\BackupService\1.0.4016\bin\Data\IHDEV01\IHDEV01_DatabaseFiles.exe
在这种情况下,创建的 RAR SFX 存档文件包含:
FLATFILES\File.dbf
FLATFILES\Subdirectory 1\Subfolder 1\File_1-1.dbf
FLATFILES\Subdirectory 1\Subfolder 2\File_1-2.dbf
FLATFILES\Subdirectory 1\File_1.dbf
FLATFILES\Subdirectory 2\File_2.dbf