[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 28# jave000
将下列代码放在5楼4-5行之间:
  1. set "str1=!str: m =  m !"
  2. set "str1=!str:0 3=0  3!"
复制代码
但我总觉得这样改有点牵强,也会有问题。先试试吧。
1

评分人数

TOP

回复 24# jave000
MOC922.txt改成了*.txt运行的话,增加一行代码:
  1. set "str1=!str1:.txt:=,!"
复制代码

TOP

回复 30# jave000


csv 要求,如果有空格,必须用""

TOP

本帖最后由 newswan 于 2021-8-31 19:43 编辑
  1. Get-Item *.txt | ForEach-Object {
  2.     (Get-Content $_) -match "\s{3}\d+\s" `
  3.         -replace "^\s+(\d+)\s+([\d.]+)\s+",($_.BaseName + ",`$1,`$2,") `
  4.         -replace "\s+$","" `
  5.         -replace "\s{2,}","," `
  6.         -replace "(?=Baseplate)","," `
  7. } | Out-File list
复制代码

TOP

回复 33# newswan
好像你记错了,列内有英文逗号,整列要加双引号;列内有双引号的,双引号字符要连续写两次,且整列再加双引号。

TOP

回复 35# qixiaobin0715


看了一下,好像空格不必 ""

TOP

本帖最后由 newswan 于 2021-8-31 23:40 编辑

现在没有 office 不好测试,csv 的规范 有些不一致
ms office 默认tab
不知道要不要求标题,字段数量

TOP

  1. Get-Item *.txt | ForEach-Object {
  2.     (Get-Content $_) -match "\s{3}\d+\s" `
  3.         -replace "^\s+(\d+)\s+([\d.]+)\s+",($_.BaseName + "`t`$1`t`$2`t") `
  4.         -replace "\s+$","" `
  5.         -replace "\s{2,}","`t" `
  6.         -replace "(?=Baseplate)","`t" `
  7. } | Out-File list.csv
复制代码
1

评分人数

TOP

本帖最后由 jave000 于 2021-9-1 09:12 编辑

回复 38# newswan


    Remove-Item -Path $dest * -Include .txt
    Remove-Item -Path $dest\ * -Include .txt
    Remove-Item -Path $dest\* -Include .txt
    Remove-Item -Path $dest -Include *.txt
    Remove-Item -Path $dest *.txt
    Remove-Item -Path $dest\*.txt
我试了如上的代码,全都无法删除txt,请问是为什么?

所以`t表示分列符号喽,你prt代码我又多看懂一点

TOP

回复 38# newswan


目前写成这样,就完美使用了,只有最后一句删除的代码怎么改也无法成功。
@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & exit /b
$jave = read-host "Project Model Folder"
$CXMPV = [Environment]::GetFolderPath("Desktop")
$sour = "\\btssvr9\pds1\$jave\3d\su\report\"
$dest = "$CXMPV\Print\"
do
{
    $minute = read-host "Minutes of Minutes"
    $minute = $minute.trim()
}
while ($minute -match "\D")
Get-ChildItem -Path $sour -File |
    Where-Object { ($_.CreationTime -gt (get-date).AddMinutes(-$minute)) -or ($_.LastWriteTime -gt (get-date).AddMinutes(-$minute)) } |
    foreach-object {
        write-host $_.fullname
        copy-item $_.fullname -Destination $dest
    }
Get-Item *.txt | ForEach-Object {
    (Get-Content $_) -match "\s{3}\d+\s" `
        -replace "^\s+(\d+)\s+([\d.]+)\s+",($_.BaseName + "`t`$1`t`$2`t") `
        -replace "\s+$","" `
        -replace "\s{2,}","`t" `
        -replace "(?=Baseplate)","`t" `
        -replace " (?=\d+x\d+x\d+mm)","`t" `
} | Out-File z-su.csv
Invoke-Item -Path $sour
Remove-Item -Path $dest -File *.txt

TOP

回复 31# qixiaobin0715


     这几天正在学习for、set、if,现在印象更深了,谢谢

TOP

TOP

本帖最后由 jave000 于 2021-9-2 12:46 编辑

回复 42# newswan


失败
    Remove-Item -Path $dest * -Include *.txt
成功
    Remove-Item -Path $dest* -Include *.txt
    Remove-Item -Path $dest*.txt
    Remove-Item $dest*.txt


另外Get-Item和Get-childItem的区别是后者包括指定路径下的子目录么?
但我目前用的功能都是指定路径根目录下,结果改了你的一个Get-childItem成为Get-Item却无法运行了,很费解

TOP

回复 43# jave000

可以多一个 \ 比较清晰
  1. $dest = "D:\"
  2. Test-Path $dest\1
复制代码

TOP

回复 44# newswan


    所以代码里前面带\,后面还带\,路径中一个\和两个\是等价的?
这样挺好的,$dest*.txt还好,如果说$destabc.txt,真的怀疑程序能否识别了

TOP

返回列表