diff --git a/__tests__/tar.test.ts b/__tests__/tar.test.ts
index ba94606..56acbce 100644
--- a/__tests__/tar.test.ts
+++ b/__tests__/tar.test.ts
@@ -51,10 +51,10 @@ test("extract BSD tar", async () => {
         [
             "-xz",
             "-f",
-            archivePath?.replace(/\\/g, "/"),
+            IS_WINDOWS ? archivePath.replace(/\\/g, "/") : archivePath,
             "-P",
             "-C",
-            workspace?.replace(/\\/g, "/")
+            IS_WINDOWS ? workspace?.replace(/\\/g, "/") : workspace
         ],
         { cwd: undefined }
     );
@@ -78,7 +78,7 @@ test("extract GNU tar", async () => {
             [
                 "-xz",
                 "-f",
-                archivePath?.replace(/\\/g, "/"),
+                archivePath.replace(/\\/g, "/"),
                 "-P",
                 "-C",
                 workspace?.replace(/\\/g, "/"),
@@ -111,10 +111,10 @@ test("create BSD tar", async () => {
         [
             "-cz",
             "-f",
-            CacheFilename?.replace(/\\/g, "/"),
+            IS_WINDOWS ? CacheFilename.replace(/\\/g, "/") : CacheFilename,
             "-P",
             "-C",
-            workspace?.replace(/\\/g, "/"),
+            IS_WINDOWS ? workspace?.replace(/\\/g, "/") : workspace,
             "--files-from",
             "manifest.txt"
         ],
diff --git a/dist/restore/index.js b/dist/restore/index.js
index 21bdbe4..52de098 100644
--- a/dist/restore/index.js
+++ b/dist/restore/index.js
@@ -5014,7 +5014,6 @@ function getWorkingDirectory() {
     return _a = process.env["GITHUB_WORKSPACE"], (_a !== null && _a !== void 0 ? _a : process.cwd());
 }
 function extractTar(archivePath) {
-    var _a, _b;
     return __awaiter(this, void 0, void 0, function* () {
         // Create directory to extract tar into
         const workingDirectory = getWorkingDirectory();
@@ -5022,17 +5021,16 @@ function extractTar(archivePath) {
         const args = [
             "-xz",
             "-f",
-            (_a = archivePath) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"),
+            archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"),
             "-P",
             "-C",
-            (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/")
+            workingDirectory.replace(new RegExp("\\" + path.sep, "g"), "/")
         ];
         yield execTar(args);
     });
 }
 exports.extractTar = extractTar;
 function createTar(archiveFolder, sourceDirectories) {
-    var _a, _b;
     return __awaiter(this, void 0, void 0, function* () {
         // Write source directories to manifest.txt to avoid command length limits
         const manifestFilename = "manifest.txt";
@@ -5041,10 +5039,10 @@ function createTar(archiveFolder, sourceDirectories) {
         const args = [
             "-cz",
             "-f",
-            (_a = constants_1.CacheFilename) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"),
+            constants_1.CacheFilename.replace(new RegExp("\\" + path.sep, "g"), "/"),
             "-P",
             "-C",
-            (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/"),
+            workingDirectory.replace(new RegExp("\\" + path.sep, "g"), "/"),
             "--files-from",
             manifestFilename
         ];
diff --git a/dist/save/index.js b/dist/save/index.js
index 78623c7..3f784aa 100644
--- a/dist/save/index.js
+++ b/dist/save/index.js
@@ -4991,7 +4991,6 @@ function getWorkingDirectory() {
     return _a = process.env["GITHUB_WORKSPACE"], (_a !== null && _a !== void 0 ? _a : process.cwd());
 }
 function extractTar(archivePath) {
-    var _a, _b;
     return __awaiter(this, void 0, void 0, function* () {
         // Create directory to extract tar into
         const workingDirectory = getWorkingDirectory();
@@ -4999,17 +4998,16 @@ function extractTar(archivePath) {
         const args = [
             "-xz",
             "-f",
-            (_a = archivePath) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"),
+            archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"),
             "-P",
             "-C",
-            (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/")
+            workingDirectory.replace(new RegExp("\\" + path.sep, "g"), "/")
         ];
         yield execTar(args);
     });
 }
 exports.extractTar = extractTar;
 function createTar(archiveFolder, sourceDirectories) {
-    var _a, _b;
     return __awaiter(this, void 0, void 0, function* () {
         // Write source directories to manifest.txt to avoid command length limits
         const manifestFilename = "manifest.txt";
@@ -5018,10 +5016,10 @@ function createTar(archiveFolder, sourceDirectories) {
         const args = [
             "-cz",
             "-f",
-            (_a = constants_1.CacheFilename) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"),
+            constants_1.CacheFilename.replace(new RegExp("\\" + path.sep, "g"), "/"),
             "-P",
             "-C",
-            (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/"),
+            workingDirectory.replace(new RegExp("\\" + path.sep, "g"), "/"),
             "--files-from",
             manifestFilename
         ];
diff --git a/src/tar.ts b/src/tar.ts
index 4682854..22eec3e 100644
--- a/src/tar.ts
+++ b/src/tar.ts
@@ -56,10 +56,10 @@ export async function extractTar(archivePath: string): Promise<void> {
     const args = [
         "-xz",
         "-f",
-        archivePath?.replace(/\\/g, "/"),
+        archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"),
         "-P",
         "-C",
-        workingDirectory?.replace(/\\/g, "/")
+        workingDirectory.replace(new RegExp("\\" + path.sep, "g"), "/")
     ];
     await execTar(args);
 }
@@ -79,10 +79,10 @@ export async function createTar(
     const args = [
         "-cz",
         "-f",
-        CacheFilename?.replace(/\\/g, "/"),
+        CacheFilename.replace(new RegExp("\\" + path.sep, "g"), "/"),
         "-P",
         "-C",
-        workingDirectory?.replace(/\\/g, "/"),
+        workingDirectory.replace(new RegExp("\\" + path.sep, "g"), "/"),
         "--files-from",
         manifestFilename
     ];