Cách tạo nhiều thư mục trong powershell


3

Trong cmd có thể được sử dụng lệnh mkdir /data/rs1 /data/rs2 /data/rs3 như: cmd example

Tất cả mọi thứ là chính xác:

folders example

Nhưng làm thế nào để nhận ra nó trong powershell?

Tôi đang cố gắng sử dụng dấu ngoặc kép, ví dụ: powershell

Với các trích dẫn Tôi chỉ nhận được một thư mục và gặp sự cố trong powershell: folders example

mkdir : Could not find part of the path "rs3".
строка:1 знак:1
+ mkdir "/data/rs1 /data/rs2 /data/rs3"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\data\rs1 \data\rs2 \data\rs3:String) [New-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : CreateDirectoryIOError,Microsoft.PowerShell.Commands.NewItemCommand

Không có qoutes cũng có vấn đề và không có bất kỳ thư mục folders example: powershell

mkdir : Can not find a positional parameter that takes an argument"/data/rs2".
строка:1 знак:1
+ mkdir /data/rs1 /data/rs2 /data/rs3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [mkdir], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,mkdir

Để tránh các vấn đề, tôi có thể viết mà không có khoảng trắng:

PS C:\data> mkdir /data/rs1/data/rs2/data/rs3

Nhưng nó sẽ là một thư mục rs1 có chứa bên trong rs2rs3:

C:\data\rs1\data\rs2\data\rs3

Tôi đánh giá cao bất kỳ sự giúp đỡ.

Câu trả lời:


2

Có rất nhiều cách để làm điều này trong powershell

1..3 | ForEach {MD ".\data\rs$_"}

hoặc là

'RS1','RS2','RS3' | % {New-Item -Name ".\data\$_" -ItemType 'Directory'}

hoặc là

for ($i=1;$i -le 3;$i++){MD ".\data\rs$i"}

hoặc là

MD .\data
Pushd .\data
$Folder = @('RS1','RS2','RS3')
Md $Folder

Ở đâu md là bí danh cho New-Item
%, ForEach là bí danh cho ForEach-Object


Cảm ơn, giải quyết bằng cách sử dụng biến thể đầu tiên. Trong trường hợp của tôi, nó là PS C:\data> 1..3 | ForEach {MD "rs$_"}
invzbl3

2

Bạn có thể sử dụng foreach trong PowerShell để hoàn thành việc này

ForEach ($Dir in ("Dir1", "Dir2", "Dir3", "Dir4"))
    {
        New-Item -ItemType Directory -Path [PATH]\$Dir
    } 

Đọc thêm về ForEach trong PowerShell


Mặc dù các dấu ngoặc đơn kèm theo các mục bộ sưu tập dễ đọc, nhưng chúng không bắt buộc. Tôi thích ss64.com nhưng Get-Help about_foreach hoặc là docs.microsoft.com chi tiết hơn
LotPings

1

Trước hết, vui lòng không sử dụng ảnh chụp màn hình cho những thứ bạn có thể dễ dàng sao chép-dán dưới dạng văn bản.

Lệnh trong ảnh chụp màn hình của bạn là thế này:

mkdir \data\rs1 \data\rs2 \data\rs3

Và điều này cũng sẽ hoạt động tốt trong một tập lệnh, miễn là bạn đang ở đúng ổ đĩa, trong ví dụ này C:.

Lệnh mkdir /data/rs1 /data/rs2 /data/rs3 không phải là điều tương tự, vì như bạn có thể thấy, như các tham số đường dẫn sử dụng / là dấu phân cách đường dẫn, sẽ không hoạt động trong Windows.

Đặt dấu ngoặc kép xung quanh danh sách các đường dẫn cũng không giúp được gì. Bằng cách đó, biểu thức trích dẫn kép được coi là một đường dẫn duy nhất, hơn là 3 con đường.

Tóm lại, cũng như mkdir \data\rs1 \data\rs2 \data\rs3 hoạt động trong ví dụ lệnh của bạn, nó hoạt động chính xác theo cùng một cách trong một tập lệnh bó.


1

mkdir có thể tạo nhiều thư mục trong một lần, vì vậy không cần foreach. bạn chỉ cần tách chúng bằng dấu phẩy:

Ở đây tôi đã tạo 3 thư mục (Hello, Hello2, Hello3) trong một thư mục

PS C:\install> mkdir Hello,Hello2,Hello3


    Verzeichnis: C:\install


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       09.07.2018     10:39                Hello
d-----       09.07.2018     10:39                Hello2
d-----       09.07.2018     10:39                Hello3

Ở đây tôi đã tạo 3 thư mục trên các thư mục con riêng biệt trong một thư mục:

PS C:\install> mkdir .\xy3\Hello, .\yz3\Hello2, .\tr3\Hello3


    Verzeichnis: C:\install\xy3


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       09.07.2018     10:42                Hello


    Verzeichnis: C:\install\yz3


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       09.07.2018     10:42                Hello2


    Verzeichnis: C:\install\tr3


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       09.07.2018     10:42                Hello3
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.