Board logo

标题: [问题求助] powershell如何读取带有空格的文本并创建文件夹? [打印本页]

作者: zhanglei1371    时间: 2018-3-24 22:38     标题: powershell如何读取带有空格的文本并创建文件夹?

我有文本,位于D:\新 123\zj.txt
内容为:
第一节 概述
第二节 文件读取
第三节 文本建立
.....
有很多行,想要用ps来批量读取,并创建文件夹于C:\2018 备份\目录下,不知该怎么做?

另外,我电脑安装了vs2013,不知如何配置能够配置为ps的编辑器+调试器?
谢谢各位的帮助!
作者: yhcfsr    时间: 2018-3-25 08:18

本帖最后由 yhcfsr 于 2018-3-25 08:20 编辑

扫描文件
  1. get-childitem -path "目录名"
复制代码
读取文件
  1. get-content -path "文件路径"
复制代码
创建目录
  1. New-Item -ItemType Directory -Path "目录路径"
复制代码
说明一点:Powershell和VS完全没关系,WIN10自带最新PS,WIN10以下系统去微软官网下载升级补丁升级PS
作者: zhanglei1371    时间: 2018-3-25 12:41

回复 2# yhcfsr
能否指点下,下面的代码为何不行?
  1. $aa = Get-Content D:\新 123\zj.txt
  2. $len = $aa.length
  3. for ($i = 0; $i -lt $len; $i++)
  4. {
  5. New-Item -Path  "C:\2018 备份\$aa[$i]"  -ItemType directory
  6. }
  7. Pause
复制代码

作者: zaqmlp    时间: 2018-3-25 13:08

回复 3# zhanglei1371
路径带空格
字符串与变量的拼接
作者: zaqmlp    时间: 2018-3-25 13:09

  1. gc 'D:\新 123\zj.txt'|?{$_.trim() -ne ''}|%{md ('C:\2018 备份\'+($_.trim() -replace '[\t\?\*\\:\/\|<>"]','_')) -f}
复制代码

作者: zhanglei1371    时间: 2018-3-25 14:38

回复 5# zaqmlp

谢谢。已解决。我还有个疑问,就是将代码加个括号就行了。
最后想请教下,我在调试时,若是写成这样:
Write-Host 'c:\C\'+$aa[$i]
    则得到的是所有行内容后面接中括号;
若写成这样:
Write-Host ('c:\C\'+$aa[$i])
则得到的就是正常的每行的内容。
故改成这样可以:New-Item -Path  ('C:\2018 备份\'+$aa[$i])  -ItemType directory
写成这样不行:   New-Item -Path  'C:\2018 备份\'+$aa[$i]  -ItemType directory
那么为何没有括号时显示的有问题呢?
作者: yhcfsr    时间: 2018-3-25 15:55

本帖最后由 yhcfsr 于 2018-3-25 22:37 编辑
  1. New-Item -Path  "C:\2018 备份\$aa([$i])"  -ItemType directory
复制代码

作者: zaqmlp    时间: 2018-3-25 22:08

回复 7# yhcfsr

不应该是"C:\2018 备份\$($aa[$i])"吗
作者: yhcfsr    时间: 2018-3-25 22:38

本帖最后由 yhcfsr 于 2018-3-25 22:40 编辑

回复 8# zaqmlp


    没错,看了下题主的代码,的确应该加上括号。所以我代码稍微修改了下。感谢指正




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2