[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 8# 5i365
  1. #&cls&@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. $k=2
  3. Get-ChildItem ".\A" -Directory | Sort-Object { [int]($_.Name -split '\s+')[0] } | foreach-Object { [array]$a+=$_.FullName }
  4. dir .\b|?{$_.PSIsContainer}|%{if(test-path "$($_.fullname+'\ok')"){while($j++ -le $k){move $a[$i++] $_.fullname}}
  5. if($a[$i] -eq $null){"分完"}
复制代码

TOP

回复 7# idwma


遇到两个情况:
1.我把copy改成了move 就报错了
2.从哪里可以设置每次分配的文件夹的数量, 例如,从A文件夹每次移动N个子文件夹到B下的某个符合要求的子文件夹中, 现在是每次移动两个

#&cls&@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
Get-ChildItem ".\A" -Directory | Sort-Object { [int]($_.Name -split '\s+')[0] } | foreach-Object { [array]$a+=$_.FullName }
dir .\b|?{$_.PSIsContainer}|%{if(test-path "$($_.fullname+'\ok')"){move $a[$i++] $_.fullname -rec; move $a[$i++] $_.fullname -rec}}
if($a[$i] -eq $null){"分完"}

TOP

回复 6# 5i365


    忘了ok路径字符拼接没处理
  1. test-path "$($_.fullname+'\ok')"
复制代码

TOP

回复 5# idwma


  Test-Path : A positional parameter cannot be found that accepts argument '\ok'.
At line:2 char:34
+ dir .\b|?{$_.PSIsContainer}|%{if(test-path $_.fullname\ok){copy $a[$i ...
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: ( [Test-Path], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand

Test-Path : A positional parameter cannot be found that accepts argument '\ok'.
At line:2 char:34
+ dir .\b|?{$_.PSIsContainer}|%{if(test-path $_.fullname\ok){copy $a[$i ...
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Test-Path], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand

Test-Path : A positional parameter cannot be found that accepts argument '\ok'.
At line:2 char:34
+ dir .\b|?{$_.PSIsContainer}|%{if(test-path $_.fullname\ok){copy $a[$i ...
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Test-Path], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand

Index operation failed; the array index evaluated to null.
At line:3 char:4
+ if($a[$i] -eq $null){"分完"}
+    ~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArrayIndex

请按任意键继续. . .

TOP

本帖最后由 idwma 于 2022-1-10 18:14 编辑
  1. Get-ChildItem “.\A”-Directory | Sort-Object { [int]($_.Name -split '\s+')[0] } | foreach-Object { [array]$a+=$_.FullName }
  2. dir .\b|?{$_.PSIsContainer}|%{if(test-path $_.fullname\ok){copy $a[$i++] $_.fullname -rec; copy $a[$i++] $_.fullname -rec}}
  3. if($a[$i] -eq $null){"分完"}
复制代码

TOP

本帖最后由 5i365 于 2022-1-10 13:41 编辑

回复 3# qixiaobin0715


   感谢指正, 上面描述有点笼统, 第一种情况有包含第2、3中的情况。

pwershell跨平台真是牛X了, 一份代码两个系统运行, 确实不错

貌似,只限字符中串和文件处理之类的代码, 有些win专用的代码还是不能跨平台的

我用的一个音乐软件, 在win和mac都能安装, 刚用苹果系统, 不太熟悉, 所以考虑用ps, 一举多得

TOP

本帖最后由 qixiaobin0715 于 2022-1-10 12:40 编辑

回复 1# 5i365
这个用批处理应当也能解决。
但没有理解第一种情况的意思。
感觉第一种情况应当包含第2、3中情况。

TOP

感觉这个示例太综合了,考查的点有多

TOP

返回列表