2011-03-09 114 views
0

我寫了一個非常簡單的批處理腳本,將做XSLT轉換對我來說,翻譯一堆的HTML文件,以XML文件:重命名文件的VB腳本?

FOR %%i IN (*.htm) DO java -jar saxon.jar -o:"..\Front_Matter\%%i.xml" "%%i" "C:\Documents and Settings\Robert\Desktop\xsl\htm2xml.xsl" 

的XSLT工作正常,但只是在文件被創建沒有按沒有所需的文件名,例如,如果原始文件名是「Happy Christmas.htm」,我希望輸出xml被稱爲「Happy_Christmas.xml」,所以只有兩件事,首先是獲得擺脫了原始文件名的.htm部分,其次是用下劃線替換空格。

當前生成的文件名很醜,如:「Happy Christmas.htm.xml」。

在此先感謝!

+0

順便問一下,你的代碼是不是VBScript中,這是一個Windows批處理文件。 – Helen 2011-03-09 18:52:28

+0

@海倫:對不起,我已經編輯過了。 – Kevin 2011-03-09 19:04:27

回答

1
  1. 使用%%~ni而不是%%i提取基本文件名不帶擴展名。

  2. 使用%var: =_%語法用下劃線替換var變量值中的空格。

所以,基本上,你需要的東西是這樣的:

@echo off 
setlocal enabledelayedexpansion 

FOR %%i IN (*.htm) DO (
    SET basename=%%~ni 
    SET basename=!basename: =_! 
    java -jar saxon.jar -o:"..\Front_Matter\!basename!.xml" "%%i" "C:\Documents and Settings\Robert\Desktop\xsl\htm2xml.xsl" 
) 
+0

似乎進程正在無限循環中運行,並且沒有生成xml文件? – Kevin 2011-03-09 19:16:34

+0

@Robert:我錯過了'htm2xml.xsl'後的尾部報價。這可能是一個問題嗎? – Helen 2011-03-09 19:20:52

+0

我確實把它放回去了,但還是一樣。讓我嘗試再次運行它。 – Kevin 2011-03-09 19:39:31

0
Set fso = CreateObject("Scripting.FileSystemObject") 

set oFldr = fso.getfolder("N:\Groups\TestGroup\UPS\") 

for each ofile in oFldr.Files 
    if lcase(fso.GetExtensionName(ofile.Name)) = "txt" then 
    fso.MoveFile ofile.Path, ofile.ParentFolder & "\HRSC100.txt" 

    Exit for 
    end if 
Next 
*if you want vbscirpt then above will work*