【发布时间】:2011-09-20 15:07:20
【问题描述】:
我正在寻找编写一个脚本,该脚本将获取一堆 .js 文件,对其进行压缩,然后用同一文件夹中的新文件替换旧文件。我尝试了一些事情,但我发现自己不断遇到新问题,因此我认为最好求助于对我有更好理解的人并重新开始。
谁能指出我正确的方向?
更新: 我正在使用一组与此类似的命令:
>Get-ChildItem c:\NewFolder\ -recurse |
&java -jar yuicompressor-2.4.6
它似乎并不想允许这种类型的输出使用。我确信有一种方法可以完成这项工作,但是对于 PowerShell 来说还是相当新的,我不太有信心自己能解决这个问题。
更新: 使用下面建议的命令字符串,我可以让 powershell 给我似乎是从新压缩的 .js 中读取的内容,但它不会用压缩文件替换现有文件或将其写入我相信的标准输出以 [filename].min.js 格式位于同一目录中。
更新: 建议命令的修改版本似乎可以解决问题!
>Get-ChildItem c:\NewFolder\ -exclude jquery*.js,*min.js -recurse | %{java -jar yuicompressor-2.4.6.jar ($_.fullname) -o ($_.fullname)}
但是,当命令在 PowerShell 中运行时,奇怪的是,我从 PowerShell 收到一条关于 Java 命令的错误消息...
java.exe : 在 line:4 char:72 + Get-ChildItem c:\Scripts\ -排除 jquery*.js,*min.js -recurse | %{java .fullname) -o ($.fullname)} + CategoryInfo : NotSpecified: (:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError 用法:java -jar yuicompressor-x.y.z.jar [选项] [输入文件]
全局选项 -h, --help 显示此信息 --type 指定输入文件的类型 --charset 使用读取输入文件 --line-break 在指定列号后插入换行符 -v, --verbose 显示信息性消息和警告 -o 将输出放入 .默认为标准输出。 可以使用以下语法处理多个文件: java -jar yuicompressor.jar -o '.css$:-min.css' *.css java -jar yuicompressor.jar -o '.js$:-min.js' *.js
JavaScript 选项 nomunge 仅缩小,不要 obfuscate preserve-semi 保留所有分号 disable-optimizations 禁用所有微优化
如果没有指定输入文件,则默认为标准输入。在这种情况下, “类型”选项是必需的。否则,需要“类型”选项 仅当输入文件扩展名既不是“js”也不是“css”时。
知道 PowerShell 试图告诉我什么吗?
【问题讨论】:
标签: javascript powershell compression