2011-03-09 181 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*