找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22295|回复: 8

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

[复制链接]
发表于 2018-3-24 22:38:12 | 显示全部楼层 |阅读模式
我有文本,位于D:\新 123\zj.txt
内容为:
第一节 概述
第二节 文件读取
第三节 文本建立
.....
有很多行,想要用ps来批量读取,并创建文件夹于C:\2018 备份\目录下,不知该怎么做?

另外,我电脑安装了vs2013,不知如何配置能够配置为ps的编辑器+调试器?
谢谢各位的帮助!
发表于 2018-3-25 08:18:19 | 显示全部楼层
本帖最后由 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
 楼主| 发表于 2018-3-25 12:41:58 | 显示全部楼层
回复 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
复制代码
发表于 2018-3-25 13:08:02 | 显示全部楼层
回复 3# zhanglei1371
路径带空格
字符串与变量的拼接
发表于 2018-3-25 13:09:46 | 显示全部楼层
  1. gc 'D:\新 123\zj.txt'|?{$_.trim() -ne ''}|%{md ('C:\2018 备份\'+($_.trim() -replace '[\t\?\*\\:\/\|<>"]','_')) -f}
复制代码
 楼主| 发表于 2018-3-25 14:38:28 | 显示全部楼层
回复 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
那么为何没有括号时显示的有问题呢?
发表于 2018-3-25 15:55:37 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-3-25 22:37 编辑
  1. New-Item -Path  "C:\2018 备份\$aa([$i])"  -ItemType directory
复制代码
发表于 2018-3-25 22:08:18 | 显示全部楼层
回复 7# yhcfsr

不应该是"C:\2018 备份\$($aa[$i])"吗
发表于 2018-3-25 22:38:17 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-3-25 22:40 编辑

回复 8# zaqmlp


    没错,看了下题主的代码,的确应该加上括号。所以我代码稍微修改了下。感谢指正
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:44 , Processed in 0.019465 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表