用Javascript与WScript实现PPT->HTM在线转换,压缩并上传

本文介绍了一种将PPT文件转换为MHT格式并压缩成RAR文件的方法,使用了PowerPoint应用程序接口和WinRAR进行文件格式转换及压缩,最后通过表单提交上传压缩后的文件。

 


<%@ page language="java" contentType="text/html;charset=GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="http://localhost:8080/web1/">
   
    <title>My JSP 'MyJsp.jsp' starting page</title>
   
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
   
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

 <SCRIPT LANGUAGE="JavaScript">
 <!--

 var target_htm_name = "test";


 var target_htm_folder = "c://temp//tchaid//uptmp//" + target_htm_name;
 var target_htm_file = target_htm_folder + "//" + target_htm_name + ".htm";
 var target_rar_file = target_htm_folder + "//" + target_htm_name + ".rar";

 function check_folder()
 {
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  if(!fso.FolderExists("c://temp"))
   fso.CreateFolder("c://temp");

  if(!fso.FolderExists("c://temp//tchaid"))
   fso.CreateFolder("c://temp//tchaid");

  if(!fso.FolderExists("c://temp//tchaid//uptmp"))
   fso.CreateFolder("c://temp//tchaid//uptmp");

  if(!fso.FolderExists(target_htm_folder))
   fso.CreateFolder(target_htm_folder);
 }

 function ConvertPPT2MHT(file)
 {
  var PPT = new ActiveXObject("PowerPoint.Application");
  var Pres = PPT.Presentations.Open(file, false, false, false);
  Pres.SaveAs(target_htm_file, 12, false);
  Pres.Close();
 }
 
 function Compress()
 { 
  var winRar=new ActiveXObject("WScript.Shell");  
  var tmp = winRar.CurrentDirectory;
  winRar.CurrentDirectory = target_htm_folder;
  var cmd="winrar a "+ target_rar_file + " . -r" ;
  winRar.run(cmd,1,true);
  winRar.CurrentDirectory = tmp;
 

  var fso = new ActiveXObject("Scripting.FileSystemObject");
  fso.DeleteFile(target_htm_file,true);

  var t = target_htm_folder + "//" + target_htm_name + ".files";
  fso.DeleteFolder (t,true);

  winRar.SendKeys("^a");
  winRar.SendKeys(target_rar_file);
  winRar = null;
 }
 
 function do_upload()
  {
   var form = document.forms["myform"];
   if(form.sFile.value == target_rar_file)
    form.submit();
   else
    setTimeout('do_upload()',10); //由于消息机制,winRar.SendKeys的按键消息此时还没有生效,这里用
  }                                                       //定时器来给系统一个机会来在提交之前把按键消息处理完
 
 function on_upload(form)
 {
  var form = document.forms["myform"];
 
  if(form.sFile.value.length == 0)
  {
   alert("你没有选择任何文件,请选择要上传的PPT或DOC文件!");
   return false ;
  }

  var type = 0 ;
  if(/ppt$/i.test(form.sFile.value)) 
   type = 1 ;       //PPT文件
  else if(/doc$/i.test(form.sFile.value))
   type = 2 ;       //DOC文件
 
  if(type == 0)
  {
   alert("请选择PPT文件或DOC文件上传!");
   return false ;
  }

  form.sFile.focus();
  check_folder();
  ConvertPPT2MHT(form.sFile.value);
  Compress();

 do_upload();
 }
 
  
  
 

 //-->
 </SCRIPT>
  </head>
 
  <body>
   
    Select a PPT file
 <form name="myform" action="upload_handler.jsp" method="post" enctype="multipart/form-data">
  <input type="file" name="sFile" id="sFile" />
  <input type="button" name="Button" value="upload" onclick="on_upload()"/>
  <input type="submit" name="Button" value="submit"/>
 </form>
   
  </body>
</html>

<think>嗯,用户想用BAT脚本创建快捷方式,且在目标栏里添加参数'-minimize'。首先,我需要回忆一下Windows下如何通过命令行或脚本来创建快捷方式。根据之前看到的引用,比如引用[1]提到使用WshShell.CreateShortcut方法可以创建快捷方式对象,这可能涉及到VBScript。那用户的问题是要在BAT脚本中实现这一点,所以可能需要结合BAT和VBScript。 用户提到的在目标属性中添加参数,比如在快捷方式的目标路径后面加上“-minimize”,这通常在手动创建快捷方式时,是在目标栏里直接添加参数。但通过脚本的话,可能需要设置快捷方式对象的Arguments属性。不过,根据引用[1],CreateShortcut方法返回的WshShortcut对象,其TargetPath是目标路径,而Arguments可能就是用来设置参数的。所以应该是在创建快捷方式时,将参数赋值给Arguments属性。 接下来,用户使用的是BAT脚本,所以可能需要编写一个VBScript代码片段嵌入到BAT中。例如,使用echo将VBScript代码写入临时文件,然后执行这个临时文件。这样可以在BAT中调用cscript来运行VBScript,完成快捷方式的创建。 另外,用户可能需要知道如何设置快捷方式的其他属性,比如起始位置或者图标。但根据问题描述,主要关注的是目标中的参数。因此,重点在于设置TargetPath和Arguments属性。例如,快捷方式的目标是“C:\path\to\program.exe”,参数是“-minimize”,所以在VBScript中,TargetPath应该是程序的路径,Arguments设为“-minimize”。 然后,用户可能还需要指定快捷方式的保存位置,比如桌面或者某个特定目录。这时候需要知道桌面路径的环境变量,比如%USERPROFILE%\Desktop。在BAT中可以通过环境变量来动态获取路径。 另外,用户提供的引用中有关于执行BAT文件的部分,比如引用[3]和引用[4]提到了执行BAT脚本的方法,但可能和当前问题关联不大。不过,引用[1]中的CreateShortcut是关键,所以需要重点参考这部分。 总结步骤:使用BAT调用VBScript,在VBScript中使用WshShell.CreateShortcut创建快捷方式,设置TargetPath为程序路径,Arguments为“-minimize”,然后保存快捷方式到指定位置。 现在需要检查是否有其他可能性,比如PowerShell命令是否更简单,但用户明确要求使用BAT脚本,所以可能需要坚持用VBScript的方法。另外,是否有其他工具或命令行程序可以直接创建快捷方式,但系统自带的可能只有VBScript的方法,或者需要第三方工具,但用户可能希望不依赖额外工具。 所以最终的解决方案应该是在BAT中生成VBScript代码,运行它来创建快捷方式,正确设置参数。确保路径中的空格正确处理,可能需要使用引号包裹路径。例如,如果程序路径有空格,TargetPath需要用引号括起来吗?在VBScript中,赋值给TargetPath时应该直接使用字符串,包含空格的话可能需要引号,或者在代码中处理。 另外,测试示例是否正确,比如创建到桌面的快捷方式,参数是否正确添加。用户可能需要验证是否成功,所以示例代码需要准确无误。</think>### 分步解决方案 #### 方法1:通过VBScript脚本嵌入BAT实现 1. **创建BAT脚本**:新建一个文本文件,扩展名改为`.bat` 2. **添加VBScript代码**:通过`echo`命令生成临时VBScript代码,调用Windows Script Host对象创建快捷方式 3. **设置参数**:在快捷方式属性中通过`Arguments`字段添加`-minimize`参数 ```bat @echo off set SCRIPT="%TEMP%\create_shortcut.vbs" echo Set oWS = WScript.CreateObject("WScript.Shell") > %SCRIPT% echo sLinkFile = "%USERPROFILE%\Desktop\MyApp.lnk" >> %SCRIPT% echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT% echo oLink.TargetPath = "C:\Program Files\MyApp\app.exe" >> %SCRIPT% echo oLink.Arguments = "-minimize" >> %SCRIPT% echo oLink.WorkingDirectory = "C:\Program Files\MyApp" >> %SCRIPT% echo oLink.Save >> %SCRIPT% cscript /nologo %SCRIPT% del %SCRIPT% ``` #### 方法2:使用PowerShell命令(兼容BAT环境) 在BAT脚本中调用PowerShell命令直接创建快捷方式: ```bat @echo off powershell -Command "$WshShell = New-Object -ComObject WScript.Shell; $shortcut = $WshShell.CreateShortcut('%USERPROFILE%\Desktop\MyApp.lnk'); $shortcut.TargetPath = 'C:\Program Files\MyApp\app.exe'; $shortcut.Arguments = '-minimize'; $shortcut.Save()" ``` ### 关键参数说明 1. **TargetPath**:目标程序绝对路径,需包含空格路径的引号处理[^1] 2. **Arguments**:添加启动参数`-minimize` 3. **WorkingDirectory**:设置程序启动时的默认工作目录 4. **Save()**:必须调用保存方法才能使快捷方式生效 ### 验证方法 创建完成后,右键点击生成的快捷方式选择"属性",观察"目标"字段是否显示为: ``` "C:\Program Files\MyApp\app.exe" -minimize ``` ### 扩展应用 可通过修改以下参数实现更多功能: - 添加图标:`oLink.IconLocation = "图标路径, 序号"` - 设置窗口状态:`oLink.WindowStyle = 7`(最小化窗口) - 管理员权限运行:需额外注册表操作[^3] 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值