[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [己解决]]数值运算,求BAT代码谢谢

1.txt
买001 5.193 566.05
买045 5.142 15,774.00
买198 4.850 12,555.57
卖031 5.229 15,853.76
卖118 5.400 23,877.00
卖133 5.450 10,466.92


2.txt
买001 5.193 0 566.05
买045 5.142 -0.982 15,774.00
买198 4.850 -6.605 12,555.57
卖031 5.229 0.693 15,853.76
卖118 5.400 3.986 23,877.00
卖133 5.450 4.948 10,466.92


1.txt运算输出2.txt,感觉有点复杂,不知bat能否做到,求代码谢谢!!
读取第二列第一行数值5.193为除数,公式:第二列各数值/除数*100-100=第三列各数值(商:保留小数点后面3位数)

回复 1# keshun
  1. @Powershell "& {[ScriptBlock]::Create("'#' + (gc '%~f0' -raw)").Invoke()}" & pause & goto :eof
  2. gc 1.txt | select @{expression={$_.split()[0]}; name="col1"},
  3. @{expression={$_.split()[1]}; name="col2"},
  4. @{expression={"{0:n3}" -f ([float]$_.split()[1] / [float]((gc 1.txt -TotalCount 1).Split()[1]) * 100 -100)}; name="col3"},
  5. @{expression={$_.split()[2]}; name="col4"} |Tee-Object 2.txt
复制代码

TOP

本帖最后由 keshun 于 2019-4-5 17:27 编辑

回复 2# ivor


    谢谢回复,安装ps显示cpu L5420不支持,安装自动回退了,我也不懂ps,不知bat能否实现,谢谢!
rRecordException
    + FullyQualifiedErrorId : S
   plattingNotPermitted
下论坛PowerShell绿色精简版运行代码显示。

TOP

本帖最后由 ivor 于 2019-4-5 16:57 编辑

回复 3# keshun


    支持powershell 精简版,去掉代码中第一行
  1. col1                   col2                  col3                  col4                 
  2. ----                   ----                  ----                  ----                 
  3. 买001                   5.193                 0.000                 566.05               
  4. 买045                   5.142                 -0.982                15,774.00            
  5. 买198                   4.850                 -6.605                12,555.57            
  6. 卖031                   5.229                 0.693                 15,853.76            
  7. 卖118                   5.400                 3.986                 23,877.00            
  8. 卖133                   5.450                 4.949                 10,466.92            
复制代码

TOP

回复 4# ivor


    谢谢,看上去效果不错,安装了NET4.0,运行代码一闪而过,看来是CPU不支持吧,系统win732,也不知bat能否达到你这效果?
PowerShell.exe放到了c:/windows/system32目录,点击后生成了几个文件,代码复制到1.ps1使用PowerShell运行,运行一闪而过不知什么原因??

TOP

win7自带ps,安装精简版纯多此一举.一闪而过因该是执行策略问题。PS2.0支持自定义哈希对象。

TOP

回复 6# xczxczxcz


输入get-help about_execution_policies 后显示以下内容!!!!!!!!

   
    "Restricted"是默认策略。

        Restricted
            - 默认执行策略。

            - 允许单个命令运行,但不能运行脚本。

            - 阻止所有脚本文件的运行,包括格式和配置文件 (.ps1xml)、模块脚本文
件 (.psm1)
              和 Windows PowerShell 配置文件 (.ps1)。

        AllSigned
            - 可以运行脚本。

            - 要求所有脚本和配置文件由可信发布者签名,包括在本地计算机上编写的
脚本。

            - 在运行来自尚未分类为可信或不可信发布者的脚本之前进行提示。

            - 运行来自 Internet 以外的源的未签名脚本及已签名但有恶意的脚本存在
风险。

        RemoteSigned
            - 可以运行脚本。

            - 要求可信发布者对从 Internet(包括电子邮件和即时消息程序)下载的脚
本和配置文件
              进行数字签名。

            - 不要求对已经运行和已在本地计算机编写的脚本(不是从 Internet 下载的

本)进行数
              字签名。

            - 面临运行已签名但有恶意的脚本带来的风险。

        Unrestricted
            - 可以运行未签名脚本。(面临运行恶意脚本所带来的风险。)

            - 在运行从 Internet 下载的脚本和配置文件之前警告用户。

        Bypass
            - 不阻止任何执行项,不显示警告和提示。

            - 此执行策略设计用于两种配置:一种是 Windows PowerShell 脚本内置于
一个较大的
              应用程序中;一种是 Windows PowerShell 成为拥有自身安全模型的某个
程序的基础。

        Undefined
            - 当前作用域中未设置执行策略。

            - 如果所有作用域中的执行策略为 Undefined,则有效执行策略为 Restrict
ed,该策略
              是默认执行策略。


    注意:在不对通用命名约定 (UNC) 路径与 Internet 路径加以区分的系统上,可能无
法使用
          RemoteSigned 执行策略来允许运行由 UNC 路径标识的脚本。



执行策略作用域
----------------------
    可以设置仅在特定作用域中有效的执行策略。

    Scope 的有效值为 Process、CurrentUser 和 LocalMachine。LocalMachine 是设置
执行策
    略时的默认设置。

    Scope 值按优先级顺序列出。

        - Process
             执行策略仅对当前会话(当前 Windows PowerShell 进程)起作用。执行策
略存储在
             $PSExecutionPolicyPreference 环境变量中。当设置了策略的会话关闭时
,将删除
             此值。

        - CurrentUser
             执行策略仅对当前用户起作用。该策略存储在 HKEY_CURRENT_USER 注册表
子项中。

        - LocalMachine
             执行策略对当前计算机上的所有用户起作用。该策略存储在 HKEY_LOCAL_MA
CHINE 注册
             表子项中。

    优先策略将在当前会话中有效,即使在较低优先级上设置了限制更加严格的策略也如
此。

    有关详细信息,请参阅 Set-ExecutionPolicy。



获取执行策略
------------------------------
    若要获取在当前会话中有效的 Windows PowerShell 执行策略,请使用 Get-Executio
nPolicy
    cmdlet。

    以下命令获取当前执行策略:

        get-executionpolicy


    若要获取对当前会话起作用的所有执行策略并按优先级顺序显示它们,请键入:

        get-executionpolicy -list

    结果类似于以下示例输出:

                  Scope    ExecutionPolicy
                  -----    ---------------
          MachinePolicy          Undefined
             UserPolicy          Undefined
                Process          Undefined
            CurrentUser       RemoteSigned
           LocalMachine          AllSigned

    在此例中,有效执行策略为 RemoteSigned,因为用于当前用户的执行策略优先于为
    本地计算机设置的执行策略。

    若要获取为特定作用域设置的执行策略,请使用 Get-ExecutionPolicy 的 Scope 参
数。

    例如,以下命令可获取用于当前用户作用域的执行策略。

        get-executionpolicy -scope CurrentUser




更改执行策略
------------------------------
    若要在计算机上更改 Windows PowerShell 执行策略,请使用 Set-ExecutionPolicy
    cmdlet。

    所做的更改会立即生效;无需重新启动 Windows PowerShell。

    如果为本地计算机(默认)或当前用户设置执行策略,则所做更改保存在注册表中,
并在再次更改该策略之前保持有效。

    如果为当前进程设置执行策略,则该策略不会保存在注册表中。执行策略一直保留到
当前进程和其所有子进程关闭为止。


    注意:在 Windows Vista 以及更高版本的 Windows 上,若要运行更改用于本地计算
机(默认)的执行策略的命令,
    则应使用"以管理员身份运行"选项启动 Windows PowerShell。


    若要更改执行策略,请键入:

        Set-ExecutionPolicy <policy-name>

    例如:

        Set-ExecutionPolicy RemoteSigned



    若要在特定作用域中设置执行策略,请键入:

        Set-ExecutionPolicy <policy-name> -scope <scope>

    例如:

        Set-ExecutionPolicy RemoteSigned -scope CurrentUser


    用于更改执行策略的命令能够成功执行,但仍无法更改有效执行策略。

    例如,用于为本地计算机设置执行策略的命令能够成功执行,但该策略会被用于当前
用户的执行策略覆盖。



删除执行策略
----------------------------
    若要删除特定作用域的执行策略,请将执行策略的值设置为 Undefined。

    例如,若要删除本地计算机所有用户的执行策略,请键入:

        set-executionpolicy Undefined

    或键入:

        set-executionpolicy Undefined -scope LocalMachine

    如果没有在任何作用域中设置执行策略,则有效执行策略为 Restricted,该策略是默
认执行策略。



在 POWERSHELL.EXE 中设置执行策略
-----------------------------------------
    可以使用 PowerShell.exe 的 ExecutionPolicy 参数为新的 Windows PowerShell 会
话设
    置执行策略。
    该执行策略仅对当前会话和子会话起作用。

    若要为新会话设置执行策略,请在命令行启动 Windows PowerShell(如 Cmd.exe 或
Windows
    PowerShell),然后使用 PowerShell.exe 的 ExecutionPolicy 参数来设置执行策略


    例如:

        powershell.exe -executionpolicy -allsigned


    设置的执行策略不存储在注册表中,而是存储在 $PSExecutionPolicyPreference
    环境变量中。当设置了策略的会话关闭时,将删除该变量。

    在会话过程中,为该会话设置的执行策略优先于在注册表中为本地计算机或当前用户
设置的
    执行策略。但是,它不会优先于使用组策略设置设置的执行策略(组策略设置在下面
讨论)。



使用组策略管理执行策略
-------------------------------------------
    可以使用"启动脚本执行"组策略设置来管理企业中的计算机的执行策略。组策略设置
将覆盖在
    Windows PowerShell 中设置的所有作用域中的执行策略。

    "启动脚本执行"策略设置如下:

    -- 如果禁用了"启动脚本执行",则脚本无法运行。这等效于"Restricted"执行策略。

    -- 如果启用了"启动脚本执行",则可选择一个执行策略。组策略设置等效于以下执行
策略设置。

        组策略                      执行策略
        ------------                ----------------
        允许所有脚本运行。          Unrestricted

        允许本地脚本和远程          RemoteSigned
        签名脚本运行。

        仅允许签名脚本运行。        AllSigned

    -- 如果没有配置"启动脚本执行",则它将不起作用。在 Windows PowerShell 中设置
       的执行策略有效。


    在组策略编辑器中,PowerShellExecutionPolicy.adm 文件将"启动脚本执行"策略添
加到"计
    算机配置"和"用户配置"节点的以下路径中。

        对于 Windows XP 和 Windows Server 2003:
        管理模板\Windows 组件\Windows PowerShell

        对于 Windows Vista 及更高版本的 Windows:
        管理模板\经典管理模板\Windows 组件\Windows PowerShell

    在"计算机配置"节点中设置的策略优先于在"用户配置"节点中设置的策略。

    PowerShellExecutionPolicy.adm 文件在 Microsoft 下载中心提供。有关详细信息,
请参阅以
    下位置的"Windows PowerShell 的管理模板":http://go.microsoft.com/fwlink/?Li
nkId=131786。


执行策略优先级
---------------------------
    在确定会话的有效执行策略时,Windows PowerShell 按以下优先级顺序来评估执行策
略:

        - 组策略:计算机配置
        - 组策略:用户配置
        - 执行策略:Process(或 PowerShell.exe -ExecutionPolicy)
        - 执行策略:CurrentUser
        - 执行策略:LocalMachine


管理签名和未签名脚本
----------------------------------
    如果 Windows PowerShell 执行策略为 RemoteSigned,则 Windows PowerShell 将不
会运
    行从 Internet(包括电子邮件和即时消息程序)下载的未签名脚本。

    可对脚本进行签名,或选择在不更改执行策略的情况下运行未签名脚本。

    有关详细信息,请参阅 about_Signing。


另请参阅
    Get-ExecutionPolicy
    Set-ExecutionPolicy
    about_Signing
    "Windows PowerShell 的管理模板"
       (http://go.microsoft.com/fwlink/?LinkId=131786)


PS C:\Users\Administrator>

TOP

  1. /*&cls
  2. @echo off
  3. set info=互助互利,支付宝扫码头像,感谢赞助
  4. rem 有问题,可加QQ956535081及时沟通
  5. title %info%
  6. start mshta VBScript:Execute("msgbox(""%info%""):close")
  7. cd /d "%~dp0"
  8. set "入=1.txt"
  9. set "出=2.txt"
  10. type "%入%"|cscript -nologo -e:jscript "%~f0">"%出%"
  11. type "%出%"
  12. pause&exit
  13. */
  14. var r=null;
  15. while(!WSH.StdIn.AtEndOfStream){
  16.     var line=WSH.StdIn.ReadLine().replace(/^\s*|\s*$/g,'');
  17.     if(line != ''){
  18.         var arr=line.split(/\s+/);
  19.         if(r==null)r=arr[1];
  20.         var s=(arr[1]/r*100-100).toString();
  21.         s=s.indexOf('.')>-1?s+'000':s+'.000';
  22.         WSH.echo(arr[0]+'\t'+arr[1]+'\t'+s.replace(/^(.*?\....).*$/,'$1')+'\t'+arr[2]);
  23.     }
  24. }
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 7# keshun

管理员运行PS例行窗口:输入:Set-ExecutionPolicy RemoteSigned -scope CurrentUser;
回车 输入 A 再确认就可以使用 PS1 脚本了。

TOP

谢谢上面几位高手的技术支持,己解决,在此感谢!!

TOP

返回列表