2013-12-09 46 views
2

我是新來的腳本,可一些請幫助我,用WinRAR用批處理腳本

我有批處理文件

  1. 看起來在文件名中的前8個字符,創建和 移動這些文件以前8個字符作爲文件夾 名稱的新文件夾。
  2. 然後查看在步驟1中爲字符(9,10,11,12)的下四個系列 創建的文件夾,並創建並移動到另一個子文件夾 ,並將接下來的4個字符作爲文件夾名稱。
  3. 然後查看在步驟2中創建的文件夾,以便擴展每個文件並創建並將 移動到擴展名爲文件夾名稱的新文件夾。

比如,我有這個樣子

ABCEFGHI0703xyz.pdf 
STUVWXYZ0805xyz.pptx 

移動到文件夾記前8個字符是隨機

ABCEFGHI\0703\PDF 
STUVWXYZ\0805\PPTX 

保存文件,接下來的4個字符的年份和月份,和9種類型的擴展。

我使用這個批處理腳本來創建這些文件夾: -

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=C:\sourcedir" 
SET "destdir=C:\sourcedir" 
FOR /f "delims=" %%a IN (
    'dir /b /a-d "%sourcedir%\*" ' 
) DO (
SET name=%%~na 
SET ext=%%~xa 
SET name=!name:~0,8!\!name:~8,4!\!ext:~1! 
MD "!name!" 2>nul 
MOVE "%sourcedir%\%%a" "!name!\" >nul 
) 
GOTO :EOF 

現在我想一個WINRAR命令添加到檔案剛剛在步驟3中創建的擴展名的文件夾中,我使用這個命令來創建檔案。

C:\ ABCEFGHI\0703\PDF>WINRAR A PDF C:\ ABCEFGHI\0703\PDF 

是否可以將此命令添加到腳本中?

+0

看看你的WinRAR文件夾中的rar.exe – MrPaulch

+0

我沒有幫助 – user3081177

+0

嗯......嗯。呃回答你的問題:是的,可能......比這更遠,我不知道你真的想知道什麼......你能指出,你有什麼嘗試和失敗的地方嗎? (或者你甚至失敗了嗎?你的解決方案看起來很穩固。) – MrPaulch

回答

0

好首先你需要有RAR.EXE在%PATH%文件夾中,

我建議你把一個鏈接在您的Windows \ System32文件夾中,像這樣:

mklink C:\Windows\System32\rar.exe "C:\Program Files\WinRAR\rar.exe" 

然後你可以開始工作。

正如你已經建議,首先創建所需的目錄樹,然後只將所需的文件添加到您的檔案,像這樣:

rar.exe a %ARCHIVE_NAME% MainFolder\*.pdf 
rar.exe a %ARCHIVE_NAME% MainFolder\FolderA\* 
rar.exe a %ARCHIVE_NAME% MainFolder\FolderB\* 

鑑於%ARCHIVE_NAME%是目標歸檔的文件名(例如foo.rar)

這將在'MainFolder'中的每個* .pdf文件以及'FolderA'和'FolderB'中的所有內容。目錄樹將被保留

而且,你可能要檢查ARCHIVE_NAME%%是否已經存在,因爲RAR只會指定的文件添加到現有檔案中(可能會覆蓋它們)

希望這澄清了一些事情給你。

編輯:這樣做recursivly未知根目錄

set ARCHIVE_NAME=%CD%\pdf_archive.rar 
for /r %CD% %%d in ('PDF') do (
    if exist "%%d" (
     echo Archiving files in: %%d 
     rar a "%ARCHIVE_NAME% "%%d"\* 
    ) 
) 

現在,這將進入子目錄recursivly(從當前目錄開始)

然後IW將尋找所謂的文件夾'PDF',如果它們存在,則會將該文件夾中的每個文件中的歸檔到%ARCHIVE_NAME%

+0

謝謝問題是我的主文件夾是未知的,第一個腳本會創建這些目錄。我需要腳本在任何目標文件夾中搜索稱爲PDF的東西並將其歸檔。 – user3081177

+0

這些PDF文件夾在什麼級別上存在? (你需要遞歸嗎?) – MrPaulch

+0

所以有所有隨機的8位數字文件夾名稱,然後是一個名爲0705(年和月)的子文件夾,然後是實際的子文件夾稱爲PDF – user3081177